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