Теория API
Клиент-серверная архитектура: клиент (мобильное приложение о погоде) – сервер (софт метеорологической станции). Расширенный вариант: клиент – балансировщик – кластер серверов (горячий/холодный резерв) – БД (база данных).
API – программный интерфейс приложения, обеспечивает взаимодействие между клиентом и сервером, предоставляется сервером.
Протокол передачи гипертекста HTTP лежит в основе API. HTTP-запрос основан на концепции, которая называется цикл запрос-ответ (request-respons).
Структура HTTP-запроса
URL. Уникальный адрес объекта, над которым нужно произвести действие.
Method. «Глагол» запроса, определяет действие. Основные методы:
GET (получить данные объекта),
POST (создать объект),
PUT (отредактировать объект),
DELETE (удалить объект).
Headers. «Заголовки» предоставляют метаинформацию о запросе, например:
User-Agent (тип устройства клиента),
Content-Type (формат данных в запросе),
Accept (формат данных, доступный для приёма).
Body. В «теле» запроса содержится информация, которую клиент передаёт серверу.
Структура HTTP-ответа
Status Code. Трёхзначный код состояния обработанного запроса. Например:
404 (объект не найден),
200 (успешно),
503 (сайт/API временно не работает).
Headers. Аналогично запросу.
Body. Аналогично запросу.
URL в запросе состоит из двух частей:
базовый URL (https://petstore.swagger.io);
путь (/v2/store/inventory).
Базовый URL включает:
протокол (http или https);
хост (доменное имя или IP);
порт (для http по умолчанию неявно указан :80, для https – :443; если используется другой порт, его нужно указать явно).
Path-параметр позволяет получить определённый объект и его характеристики. Добавляется в URL через «:», например – https://petstore.swagger.io/v2/pet/:id.
Query-параметр позволяет искать, фильтровать, сортировать данные. Чаще всего используется в GET. Добавляется в URL через «?». Несколько параметров отделяются друг от друга с помощью «&». Формат «имя=параметр». Например – https://petstore.swagger.io/v2/pet/findByStatus?status=available. Пример пагинации с помощью query-параметра – https://petstore.swagger.io/v2/pet/findByStatus?page=2&size=200.
Формат данных JSON на основе JS. Данные состоят из двух частей: key (ключ, атрибут объекта) и value (значение атрибута). Синтаксис: { "key": "value" }.
Формат данных XML (расширяемый язык разметки). Основной блок – node (узел). Структурно узел стоит из открывающего и закрывающего атрибута, между которыми располагается значение. Синтаксис: <atribut>znachenie</atribut>.
Примеры схем аутентификации в API
Базовая аутентификация. Клиент передает логин+пароль пользователя в заголовке Authorization.
API Key Auth. Клиент передаёт серверу уникальный ключ, который может быть включён в URL или Body.
OAuth 1/2 (открытая авторизация). Клиент и сервер автоматически обмениваются ключами, в итоге клиент получает токен доступа.
Last updated