API - это контракт, который предоставляет программа: какие операции можно выполнять.
API включает:
API - набор функций.
API входа, API отчетности, API платежек и тд или одно общее API.
На каждое API есть контракт который говорит какие функции можно выполнять.
Для SOAP таким контрактом является wsdl, для REST - wadl.
Описание функций которые мы можем использовать. Одни и теже функции можно использовать в разных API.
Вызвать API можно напрямую или косвенно.
Напрямую:
Косвенно:
Тестирование (через) API
Когда одна система общается с другой по протоколу(HTTP, GMS) передачи данных - это называется remote API(общение по сети). Есть еще shared memory API - это когда программа общается в одной виртуальной памяти
SOAP Передает сообщение в xml формате. WSDL - это список всех методов которые нам доступны через SOAP.
REST и SOAP на самом деле не сопоставимы. REST — это архитектурный стиль. SOAP — это формат обмена сообщениями. Давайте сравним популярные реализации стилей REST и SOAP.
REST означает REpresentational State Transfer (Википедия: «передача состояния представления»). Это популярный архитектурный подход для создания API в современном мире.
Пример реализации RESTful: JSON через HTTP;
Пример реализации SOAP: XML поверх SOAP через HTTP;
На верхнем уровне SOAP ограничивает структуры ваших сообщений, тогда как REST — это архитектурный подход, ориентированный на использование HTTP в качестве транспортного протокола.
Специфика SOAP — это формат обмена данными. С SOAP это всегда SOAP-XML, который представляет собой XML, включающий:
Специфика REST — использование HTTP в качестве транспортного протокола. Он подразумевает наилучшее использование функций, предоставляемых HTTP - методы запросов, заголовки запросов, ответы, заголовки ответов и т. д.
В SOAP вы используете формат SOAP XML для запросов и ответов. В REST такого фиксированного формата нет. Вы можете обмениваться сообщениями на основе XML, JSON или любого другого удобного формата. JSON является самым популярным среди используемых форматов.
SOAP использует WSDL (Web Services Description Language) — язык описания веб-сервисов и доступа к ним, основанный на языке XML. REST не имеет стандартного языка определения сервиса. Несмотря на то, что WADL был одним из первых предложенных стандартов, он не очень популярен. Более популярно использование Swagger или Open API.
SOAP не накладывает никаких ограничений на тип транспортного протокола. Вы можете использовать либо Web протокол HTTP, либо MQ.
REST подразумевает наилучшее использование транспортного протокола HTTP
Простота реализации
RESTFful веб-сервисы, как правило, гораздо проще реализовать, чем веб-сервисы на основе SOAP.
REST обычно использует JSON, который легче анализировать и обрабатывать. В дополнение к этому, REST не требует наличия определения службы для предоставления веб-службы. Однако в случае SOAP вам необходимо определить свой сервис с использованием WSDL, и при обработке и анализе сообщений SOAP-XML возникают большие накладные расходы.
Метод GET - используется для получения информации о ресурсе.
Метод POST предназначен для создания новых ресурсов и передачи данных.
Для обновления информации уже существующего объекта часто используется метод PUT. Также этой цели может служить метод PATCH, но принципы их работы различаются.
Метод PUT обновляет ресурс полностью, в то время как метод PATCH вносит частичные изменения в существующем ресурсе, затрагивая только указанные поля, переданные в теле запроса.
Метод PUT является идемпотентным. Это означает, что если мы отправим один и тот же запрос PUT десять раз, результат будет одинаковым. При первом вызове PUT внесет изменение в базу данных, а последующие вызовы будут заменять тот же объект теми же данными.
С другой стороны, метод PATCH может использоваться не только для обновления, но и для добавления данных. В случае многократного вызова одинакового запроса метод PATCH приведет к внесению соответствующего количества изменений в базу данных.
Если нам необходимо удалить неправильно сформированный заказ в интернет-магазине, пользователя в социальной сети или фотографию в Instagram, мы используем метод DELETE. Метод DELETE может иметь тело запроса, но также может и не иметь, но как правило, тело запроса в методе DELETE не используется.
Пример DELETE запроса, на удаление пользователя с id=123:
DELETE /users/123 HTTP/1.1 Host: example.com После успешного выполнения метода DELETE мы можем получить различные статус-коды и тела ответа от сервера:
Данный метод по своей сути похож на GET, но сервер отвечает на запрос одним лишь заголовком(без тела). (Отсюда и название метода.) Применяется, например, чтобы узнать, существует ли в сети тот или иной URL и не произошло ли каких-нибудь изменений.
OPTIONS - служит для получения параметров для ресурса или для сервера в целом и при этом сам ресурс ни как не затрагивается (то есть это более дешевая операция по сравнению с HEAD) OPTIONS возвращает параметры в заголовке. Список параметров зависит о ресурса и/или сервера. Обычно это заголовок Allow, который описывает какие методы доступны для ресурса. Этот метод позволяет клиенту определять опции и/или требования, связанные с ресурсом, или возможностями сервера, но не производя никаких действий над ресурсом и не инициируя его загрузку.
Идемпотентные методы - это методы, которые либо не изменяют состояние в базе данных, либо изменяют состояние только при первом запросе. В случае повторной отправки идентичного запроса, состояние в базе данных не изменяется. Идемпотентными методами являются: GET, PUT, DELETE, HEAD и OPTIONS.