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

Сводка

HTTP-методы в REST

С HTTP-методами ваш запрос имеет смысл, давайте пройдемся по обычным действиям.

Коды состояния ответа HTTP в REST

С помощью кодов состояния ответа HTTP вы можете указать код состояния запроса.

Серия статей

Эта статья (глава 4) является частью серии статей Zoe.js. Ниже вы можете найти следующую главу и все доступные главы.

Следующая глава



Главы























Академия Адамса

[email protected]