Webservices
Что такое веб-сервисы
В широком смысле слова Web сервис это метод которые два приложения используют для коммуникации
через Интернет.
Это может быть взаимодействие между приложениями на смартфоне, между компьютерами или
другими устройствами.
Другое популярный термин близкий по значению к Web сервисам это
API
Вебсервисы применяются там где невозможна непосредственная интеграция.
Пример №1: Если Вы хотите разместить на своём сайте яндекс-карты Вам не нужно устанавливать
программы от Яндекса, достаточно послать несколько запросов и Яндекс передаст
необходимую информацию. Это возможно потому, что программисты разработали
специальный набор запросов которые можно присылать к ним на сервер чтобы получить
в ответ карту.
Пример №2: Возможна ситуация, когда сайт, написанный на PHP хочет использовать
функционал сайта, написанного на .NET. Им нужно как-то обмениваться сообщениями,
потому-то .NET не будет понимать команды PHP и наоборот.
To обойти эту проблему программисты договорились использовать специальные сообщения,
которые не зависят от языка программирования и основаны на HTTP протоколе (потому
что обмен данными через Web идёт по HTTP).
Формат этих сообщений это либо JSON либо XML. О них мы поговорим позже.
Повторим для закрепления сути: Смысл в том, что сайт, написанный на
PHP не посылает своему партнёру никаких PHP команд, на заранее обговорённый адрес
посылается сообщение в понятном формате.
Адрес, на который посылаются сообщения называется Endpoint.
Обычно это URL (например, название сайта) и порт. Если я хочу создать веб сервис
на порту 8080 Endpoint будет выглядеть так:
http://aredel.com:8080
Если моему Web сервису нужно будет отвечать на различные сообщения я создам сразу несколько URL (interfaces) по которым к сервису можно будет обратиться. Например
http://aredel.com:8080 /resource1/status
http://aredel.com:8080 /resource1/getserviceInfo
http://aredel.com:8080 /resource1/putID
http://aredel.com:8080 /resource1/eventslist
http://aredel.com:8080 /resource2/putID
...
Как видите у моих Enpoints различные окончания. Такое окончание в Endpoint называются Resource, а начало Base URL.
Endpoint = Base URL + Resource
После того все эти интерфейсы созданы, их необходимо описать. Нужен документ из которого будет понятно
- Какие методы можно использовать, посылая запросы на каждый Endpoint
- Должны ли передаваться какие-то данные
- Если нужно передавать данные в теле запроса, то какие
- Какие ответы мы ожидаем в случае успешного запроса
- Какие ответы мы ожидаем когда с запросом или его обработкой на сервере что-то не так
Этот документ должен быть доступен программистам с обеих сторон, иначе они просто не
смогут договориться и реализовать работающий Web сервис.
Вернёмся к первому пункту списка, а именно к тому, что такое
методы.
В протоколе HTTP предусмотрено несколько способов отправить запрос на один и тот же
Endpoint. Они называются
CONNECT, DELET, GET, HEAD, OPTIONS, PATCH, POST, PUT, TRACE про их свойства можно
почитать
здесь.
Когда мы знаем какие методы с какими Enpoint можно использовать составить запросы
не составит труда. Например:
GET http://aredel.com:8080 /resource1/status
GET http://aredel.com:8080 /resource1/getserviceInfo
PUT http://aredel.com:8080 /resource1/putID
GET http://aredel.com:8080 /resource1/eventslist
POSThttp://aredel.com:8080 /resource1/eventslist
PUT http://aredel.com:8080 /resource2/putID
...
Итак, простейший запрос состоит из метода и Enpoint
Request = Method + Endpoint
Calculator. Http methods. Protocols/rfc2616.