REST api
Что это?
REST API - архитектурный стиль для распределенных гипермедиа систем.
Основные принципы REST API
1.Client-Server - Отделение клиента от сервера
Интерфейс является отдельной программой от сервера с бизнес логикой и базой данных.
2.Stateless - Отсутствие записи состояния клиента
Сервер не хранит и не запоминает состояние клиента. Каждый запрос понятен в отрыве от контекста.
3.Cacheable - Кэшируемость
В сообщении может быть пометка, что данные можно закешировать и обращаться к ним из памяти.
4.Uniform interface - Унификация интерфейса
Identification of resources - Идентификация ресурса
Каждый ресурс должен иметь уникальный идентификатор.
Manipulation through representation - Манипуляции через представление
Клиент предоставляет серверу ресурс в уже измененном виду. А сервер уже решает применить эти изменения или нет.
Self-descriptive messages - Самоописанные сообщения
Данных в сообщении достаточно, чтобы их понять и интерпретировать.
Hypermedia as the engine of application state - Гипермедиа как двигатель состояния
Сервер подсказывает клиенту какие дальнейшие запросы он может делать.
5.Layered - Многоуровневость
Сервер может быть большое множество. Но каждый знает только о существовании ближайшего.
6.Code of demand - Код по запросу
Сервер может отправить на клиент код для непосредственного исполнения.
Шпаргалка
Принципы построения URL
Для описания ресурса используй существительное во множественном числе.
/api/posts
- коллекция ресурсов
/api/posts/42
- конкретный ресурс
URL может быть составным, если ресурс существует в контексте другого ресурса.
/api/posts/42/comments
- коллекция ресурсов
/api/posts/32/comments/12
- конкретный ресурс
Методы запроса
GET
- получить ресурс или коллекция
POST
- создание или запрос без сайд-эффекта
PUT
- обновление
DELETE
- удаление
Заголовки запроса
Accept
- типы медиа, разрешенные в ответе
Authorization
- авторизационные данные для запроса
Cache-Control
- определяет, разрешено ли кэширование
Content-Type
- тип тела запроса
User-Agent
- ПО, при помощи которого осуществляется запрос - например, бразуер
HTTP статус коды
1xx
- информационные
2xx
- успешные
3xx
- перенаправление
4xx
- ошибки запроса
5xx
- ошибки сервера
Заголовки ответа
Cache-Control
- определяет, можно ли кэшировать запрос, и как долго
Content-Encoding
- тип кодировки данных
Content-Type
- формат ответа
Location
- определяет, был ли запрос перенаправлен, или где создавался ресурс
RESTful API
Это API, которые использует принципы проектирования REST