API
— это черный ящик, который получает запросы и возвращает ответы. Он предоставляет общедоступный интерфейс и скрывает нижележащую реализацию.
API означает несколько вещей, это может быть общедоступный интерфейс класса, который на самом деле является его общедоступными методами, или это может быть общедоступный интерфейс программного обеспечения. В общем, это означает программное приложение. В качестве API вы можете думать об API прогноза погоды, API футбольных голов в прямом эфире или любом другом бэкэнде приложения.
API означает интерфейс прикладного программирования
С этого момента мы говорим о программных API.
Вы можете называть пользователей API потребителями или клиентами, которые имеют несколько форматов: веб-приложение, мобильное приложение, другой API, консольная команда (CLI) и т. д. Спецификации API помогают вам разработать и задокументировать ваш API, такой как OpenAPI или Схема API. Программный API может иметь лучший исходный код в мире, но если у него нет хорошей документации, он не стоит слишком много.
Существуют различные типы API, такие как SOAP, JSON-RPC, XML-RPC, REST. RPC означает вызов удаленной процедуры, и он отлично подходит для описания бизнес-логики в виде действий. Zoe.js
построен на архитектурном стиле REST (Representational State Transfer), который отлично подходит для реализации приложений CRUD (Cread, Read, Update, Delete). Zoe.js
не является полностью совместимым с REST API, это не RESTful. Для простоты и уменьшения сложности это общий API, вроде REST-подобного API.
HTTP
HTTP (протокол передачи гипертекста) как протокол связи определяет формат отношений запрос-ответ в модели клиент-сервер. Речь идет об отправке и получении веб-страниц, файлов, данных или любых ресурсов в Интернете. Он отлично поддерживает REST API, потому что HTTP имеет схему URI, модель сервер-клиент, не имеет состояния и кэшируется. Кроме того, он имеет методы HTTP и коды состояния HTTP.
Без сохранения состояния означает, что между запросами на сервере не хранится клиентский контекст.
HTTP-сообщения удобочитаемы для человека. Давайте рассмотрим пример запроса индексной страницы example.com. GET
означает выборку, которая представляет собой метод HTTP, /
— путь или маршрут, HTTP/1.1
— версию протокола. Host: example.com
— заголовок, являющийся дополнительной информацией к запросу. Этот запрос говорит: I fetch example.com/
GET / HTTP/1.1
Host: example.com
Ответ начинается с версии протокола HTTP/1.1
, затем 200
является кодом состояния ответа, что означает OK
. Этот ответ имеет 2 заголовка, Date
и Content-Type
. Этот ответ говорит: Everything is OK, response is created at June 13th, the content what you get is HTML, here is the data (body)
HTTP/1.1 200 OK Date: Sat, 13 Jun 2020 16:44:20 GMT Content-Type: text/html
<html> <title> Example Web page ...
HTTP имеет несколько методов, таких как GET
для извлечения данных, POST
для отправки данных (полезной нагрузки) и создания чего-либо или DELETE
для удаления указанного ресурса. Существует также несколько кодов состояния HTTP, чтобы указать статус ответа, например, 200
означает OK
, 201
означает Created
, 400
означает Bad Request
или 404
означает Not Found
.
ОТДЫХА API
REST представляет данные как ресурсы в определенном формате, обычно JSON или XML. Ресурсы идентифицируются по URI, и с ними доступны различные действия.
Действия и отношения между ресурсами можно обнаружить с помощью элементов управления гипермедиа (HATEOAS), в основном через ссылки. Например, ресурс «Счет-фактура» имеет действие pay
, которое отображается как ссылка на ресурс «Счет-фактура». Представьте, что вы просматриваете веб-страницу и перемещаетесь по HTML-ссылкам, это в основном та же концепция.
REST не означает HTTP, он может работать с любым другим протоколом, который соответствует его ограничениям (модель клиент-сервер, без сохранения состояния и т. д.).
Имена ресурсов с URI
Имена ресурсов должны быть существительными во множественном числе. Используйте имена в нижнем регистре с разделителями подчеркивания или дефиса.
Для правильного представления счетов-фактур в нашем приложении URI счетов-фактур выглядит как https://example.com/invoices.
Чтобы идентифицировать один конкретный счет, я поставил идентификатор счета за именем ресурса /invoices/INV4415.
У вас могут быть вложенные ресурсы, но не углубляйтесь в /invoices/INV4415/items
или
/invoices/INV4415/items/PID77281
Сводка
- https://example.com/имя_ресурса/идентификатор_ресурса
- https://example.com/имя_ресурса/идентификатор_ресурса/имя_встроенного_ресурса/идентификатор_встроенного_ресурса
- https://example.com/имя_ресурса/идентификатор_ресурса/действие
HTTP-методы в REST
С HTTP-методами ваш запрос имеет смысл, давайте пройдемся по обычным действиям.
Коды состояния ответа HTTP в REST
С помощью кодов состояния ответа HTTP вы можете указать код состояния запроса.
Серия статей
Эта статья (глава 4) является частью серии статей Zoe.js
. Ниже вы можете найти следующую главу и все доступные главы.