Публикация

Что такое REST?

REST (REpresentational State Transfer)  - это стиль архитектуры, разработанный для проектирования сетевых приложений (в основном для различных веб-сервисов).

Основные принципы REST

  • Клиент-серверная архитектура
  • Не имеет состояния (сервер не сохраняет состояния клиента)
  • Использование кэша (ответ сервера может быть кэширован)
  • Многоуровневая архитектура
  • Единый унифицированный программный интерфейс (к примеру для получения списка фильмов вы используете URL вида: /v1/movies, а для получения информации о конкретном фильме ваш URL будет: /v1/movies/10)

REST запросы

Для работы с данными REST архитектура использует 4 основных типа HTTP запросов: 

  • GET  - для получения (чтение)
  • POST - для создания
  • PUT  - для изменения
  • DELETE - для удаления

Таким образом, чтобы получить список книг следует использовать GET запрос /v1/books, а для получения информации о конкретной книге - GET запрос /v1/books/10. Обратите внимание, что название ресурса всегда стоит использовать в множественном числе, даже если вы хотите получить информацию только об одной книге. Это позволяет избежать путаницы и стандартизировать интерфейс запросов.

Важные принципы проектирования REST API

1. Используйте только существительные в URL.
Правильно: /v1/cars, /v1/cars/10
Неправильно: /v1/getCars, /v1/showCarInformation/10

2. Метод GET никогда не должен изменять состояние
Используйте метод GET только для получения информации.

3. Используйте множественное число для ресурсов (URL).
Правильно: GET /v1/cars/10
Неправильно: GET /v1/car/10

4. Используйте HTTP статус коды.
Правильно: Status Code: 200 OK
Неправильно: Возвращать статус запроса в теле ответа

5. Используйте версии.
Правильно: /v1/cars
Неправильно: /cars

6. Используйте правильную пагинацию.
С лимитом (limit) и отступом (offset) в виде параметров.
Правильно: /v1/cars?limit=10&offset=10
Неправильно: /v1/cars/10/10

7. Для обозначения сортировки по убыванию или возрастанию, используйте + и -
Правильно: /v1/cars?sort=-price,+date
Неправильно: /v1/cars?sort=price&type=asc

8. Ограничение полей в ответе
Правильно: /v1/cars?fields=id,name,year
Неправильно: /v1/cars/id/name/year и т.д.

Статьи для дальнейшего изучения

http://blog.mwaysolutions.com/2014/06/05/10-best-practices-for-better-restful-api/ - лучшие практики REST API (на английском)
http://habrahabr.ru/post/38730/ - Статья с Хабра про REST архитектуру
http://habrahabr.ru/post/144011/ - Перевод статьи на Хабре про то, как сделать ваш REST API лучше

 

 

 

 

14.09.2015 21:50 в Программирование
Автор: andymarrel 4206 1
Фотография пользователя andymarrel

andymarrel

Проектирование и создание веб приложений - это то, чем я занимаюсь. Если есть вопросы, комментарии или пожелания - вот мой электронный адрес: andrei.troskoff@gmail.com

Комментарии (1)

Аватар пользователя andymarrel
andymarrel
26.04.2017 11:58
Комментарий скрыт модератором