Build web service php

Build your first web service with PHP, JSON and MySql

Note:- PHP MySQL is depreciated you need to use PHP MySQLi or PDO to create web services or else you can use Framework like CakePHP 3, Larvel you can check this post to create REST API with MySQL or in Framework

W eb services ( application services ) is one of the most important parts of today’s development where we centralized or data and allow the user to access that data from different sources like web, software, app, etc.. Web service provide Interoperability between two different languages. Web service is easy to understand or to made we can easily create a web service of our website. There are numbers of method through which you can create your web service

We are going to create a web service using the REST method but I also give you a small overview of the SOAP method first.

What is SOAP?.

SOAP is the Simple Object Access Protocol based on XML so it easy to read. It is a simple XML based protocol to exchange data between two different languages.

What is REST?.

REST < Representational State Transfer >is a simple stateless architecture that generally runs over HTTP. The REST web service system produces a status code response in JSON or XML format.

Note. I update this post and use MySQLi to create REST service please follow this link to create web service using PHP MySQLi.

Create web services using REST is very easy and takes less time to make as compared to others.

Читайте также:  Package php pgsql has no installation candidate

REST support all most commonly used HTTP methods (GET, POST, PUT and DELETE). We use all these methods according to need.

Application using REST

Now I am going to create a small application using REST. In this application, we can create a SignUp, Get user Info and Update user status. Before creating this application it is recommended that you have a basic understanding of PHP, MYSQL, JSON. I later explain to you how we can use this in android to access data from PHP based web services.

Step 1. I hope that you already install WAMP or XAMPP on your computer.

Step 2. Now we need to install chrome extension for testing or web service so I use Advanced REST Client.

REST Client is very useful to test or web service. You simply follow the link I mention above and install an extension in your Chrome browser.

Step 3. Now we are going to create our database http://localhost/phpmyadmin .

-- -- Database: `tuts_rest` -- create database IF NOT EXISTS `tuts_rest` -- -------------------------------------------------------- -- -- Table structure for table `users` -- CREATE TABLE IF NOT EXISTS `users` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `name` text NOT NULL, `email` varchar(100) NOT NULL, `password` varchar(100) NOT NULL, `status` text NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Copy-paste this SQL query to your phpmyadmin-> SQL.

Step 4. Now we need to create a data handler file in PHP and URL where we can handle request information.

Code: confi.php

first, we need to connect to our database. Now we can create a file to save requested data to database

Requested URL: http://localhost/aneh/rest/signup.php

 1, "msg" => "Done User added!"); >else < $json = array("status" =>0, "msg" => "Error adding user!"); > >else < $json = array("status" =>0, "msg" => "Request method not accepted"); > @mysql_close($conn); /* Output header */ header('Content-type: application/json'); echo json_encode($json);

In signup page I did not add any validation you can add your validation here if you like the main and important thing in this page is

we tell PHP that this page is returned as JSON, and we also use json_encode() to return our data in JSON format.

Now after this we need Advance Rest Client to send data to our page. Go to your chrome app store where you add your extensions

Launch Advance REST Client

click on Advance Rest client. Now add your request

url: http://localhost/aneh/rest/signup.php, Select the Request method, Click on Add new vaule define your value and data in it and click on send.

after doing all this you need send data to the server and this output like this

That all if you get done message!.

Now we get user info using the GET method. I create a new PHP file to get user info once you have command on this you easily work on a single page.

Requester URL: URL: http://localhost/aneh/rest/info.php?uid=Request_ID

 $name, "email" => $email, 'status' => $status); > $json = array("status" => 1, "info" => $result); >else < $json = array("status" =>0, "msg" => "User ID not define"); > @mysql_close($conn); /* Output header */ header('Content-type: application/json'); echo json_encode($json);

In this, we pass user id in URL. Add this URL in Advance REST Client and click on send and get output like this:

Now we can update user info using the PUT method. To read about the Put method follow this link.

Request URL: http://localhost/aneh/rest/status.php

 1, "msg" => "Status updated. "); >else < $json = array("status" =>0, "msg" => "Error updating status"); > >else < $json = array("status" =>0, "msg" => "User ID not define"); > >else < $json = array("status" =>0, "msg" => "User ID not define"); > @mysql_close($conn); /* Output header */ header('Content-type: application/json'); echo json_encode($json);

In the above I am using the PUT method in PUT we access data like this: $_SERVER[‘HTTP_DATAVARIABLE’].

Sending PUT Request from Advance Rest Client.

In this, we add URL where we want to make the request and then select Request method PUT and then add the header as shown in the above image.

This is a very simple and easy example of web service example.

Some Useful Post related to Webservices

Источник

Разработка и тестирование веб сервисов на PHP/SoapUi

Веб сервисы достаточно удобный метод организовать клиент-серверное общение, особенно если обе стороны используют разные платформы. Формализация общения позволяет однозначно определить словарь сообщений и применить огромное количество уже существующих библиотек и методик. Enterprise платформы (.net, jee) включают множество утилит для дизайна, разработки и тестирования веб сервисов, и многие из этих утилит вполне применимы на небольших проектах.

Эта статья описывает создание простого веб сервиса на php и его автоматизированное тестирование.

Веб сервис будет реализовывать три операции: реверс строки, суммирование и эхо.

План

Наш план: сначала планируем и объявляем, потом реализовываем. Таким образом у мы последовательно пройдем три этапа:

1. WSDL first — объявим наш словарь, или создадим контракт
2. Реализуем контракт на PHP
3. Автоматизируем процесс тестирования

Требования

Все инструменты open source
PHP 5+
NUSOAP — php библиотека для работы с WS (http://sf.net/projects/nusoap)
Eclipse от eclipse.org, версия for EE developers — мы воспользуемся только WSDL редактором.
SoapUI — soapui.org. Пакет для тестирования веб сервис ориентированных приложений

WSDL first

WSDL это контракт, т.е. соглашение по которому сервер обязуется обслуживать клиента и указывает параметры этого процесса. По сути это XML документ, который описывает методы, типы данных и другие параметры.

Существует два подхода к написанию веб сервисов:

1. Разработчик пишет программный код и средства платформы реализуют WSDL автоматически

2. Дизайнер или архитектор описывает интерфейсы в WSDL и под них имплементируют логику.

Многие разработчики идут по первому пути, т.е. они пишут код (java, c# и тп) м не задумываются о веб сервисах. С точки зрения разработчика это явный плюс.
Но эта стратегия сильно проигрывает в крупных проектах, с несколькими распределенными командами. В идеале, мы бы хотели стабилизировать интерфейсы и, например, позволить команде пишущей клиента не ждать релизов от команды пишущей сервер. И QA тоже должны начать писать тесты как можно раньше.
Таким образом мы приходим к необходимости написания WSDL в первую очередь.

Создадим WSDL с помощью Eclipse:

После запуска эклипса, создайте проект New->Other->Web services->WSDL
Имя файла укажите «ws.wsdl», namespace: «sample»
(namespace не имеет отношения к WS, так как является обычной практикой работы с XML)
После создания вы получите новый WSDL с одной операцией «NewOperation».
Удалите ее и создайте новую с именем «reverse». Клики по стрелкам позволяют просмотреть все параметры, но менять их не обязательно.

Сама операция revers будет получать строку от клиента и возвращать ее в обратном порядке следования символов, т.е. нужен один IN параметр String и результат String. Добавьте их в вашу операцию.

Вы можете сами добавить операции ping и sum с необходимыми параметрами (или откройте wsdl из архива, см линк в конце)
Сохраните ваши изменения как ‘ws.wsdl’
Теперь у вас есть контракт, и вы можете отдать его разработчикам клиента, сервера, QA и тд. Все они могут начинать работу независимо друг от друга.

Реализуем WS на PHP

Создайте директорию soap в вашей public_html и скопируйте ws.wsdl (соответственно файл доступен как yourserver/soap/ws.wsdl)
Серверный код мы поместим в ws.php, и localhost/soap/ws.php будет линком вашего веб сервиса.
Дополнительно распакуйте nusoap в ‘soap’.

Перейдем к непосредственной реализации логики:

Первые строки вашего ws.php:
require(‘lib/nusoap.php’);
$server = new soap_server(‘ws.wsdl’);

Эта конструкция сообщает скрипту, что надо реализовать указанный контракт. Сам вызов будет обработан:

Это все, что необходимо для поддержки WS, остальное это ваша логика — бизнес методы.

Для каждой операции из контракта надо создать php функция с эквивалентным именем.
Вот пример всего файла:

require(‘lib/nusoap.php’);
$server = new soap_server(‘ws.xml’);

function reverse($in) return strrev($in);
>

function ping() return time();
>

function sum($a, $b) return ($a + $b);
>

Если вы откроете в браузере: localhost/soap/ws.php — вы увидите все доступные операции.

Теперь ваш сервер готов обслуживать клиентов! Но к вас нет клиента… и мы не будем его писать, так как применим автоматизированное тестирование…

(не забудьте, что мы будем тестировать веб сервис, что является интеграционным тестированием, и не отменяет написания юнит тестов на бизнес методы)

Тестируем с SoapUI

SoapUI это великолепное средство для тестирования и разработки систем на основе веб сервисов. Эта утилита достойна отдельной статьи, поэтому мы воспользуемся лишь одной из опций — протестируем наш сервер, эмулируя клиента.

Для этого нам понадобятся несколько кликов…

Запустите soapUi и создайте новый проект, в качестве wsdl укажите наш ws.wsdl. Не меняйте другие параметры.

Это создаст проект и вы уведете все операции в дереве. Кликнете правой кнопкой на сервисе и выберите ‘Generate TestSuite’. Установите стиль на ‘Singe suite . ‘.

Результатом будет test suit в дереве и окно пакета (его можно закрыть.)

Сам тестовый пакет содержит ряд шагов, по одному на каждую операцию. Как вы уже догадались, это и есть элементы для проверки вашего сервиса. Вы можете запустить их все разом, или по одному, в зависимости от ваших целей.
Мы попробуем запускать их по одному, предварительно настроив.
Кликните на шаге reverse, вы увидете две панели, панель запроса и панель ответа. Контент запроса генерируется автоматически на основе контракта с знаками вопроса на месте данных. В нашем случае у нас есть один placeholder для строки, введем значение 123456789
Проверьте что target url наверху панели указывает на ваш сервис и вы можете запустить шаг на выполнение использую зеленый треугольник на панели.
Запрос уйдет на сервер и вторая панель отобразит ответ, который должен содержать 987654321 — входной параметр в обратном порядке.
Визуально мы можем убедится, что наша система работает корректно, но есть минус — мы видим это визуально. В идеале мы бы хотели это автоматизировать для регрессивного тестирования.

Обратите внимание на иконку сразу за ‘Run’. Здесь собраны условия для проверки ответа и вы можете добавить условие наличие строки 987654321 в ответе.

Теперь у вас есть автоматизированный тест, который может выполняться как вручную, так и сервером сборки.

Пример

Пример в архиве содержит
ws.php имплементация веб сервиса
ws.wsdl контракт
WS-soapui-project.xml — soap ui проект
lib nusoap библиотеки
Скачать можно тут romanenco.com/sites/default/files/phpws.zip

Источник

Оцените статью