RESTful-веб-сервис

Оригинальное название: RESTful web service

Коротко

Веб-сервис, построенный по принципам REST: у каждого ресурса свой адрес, операции выполняются методами HTTP, а результат сообщается кодом ответа и данными, чаще всего в JSON.

Что такое «RESTful-веб-сервис»

Если REST — это набор архитектурных принципов, то RESTful-сервис — их воплощение в конкретном API, к которому обращаются сайт, мобильное приложение или CRM. На практике прилагательное «RESTful» означает, что API следует основным соглашениям: понятные адреса, правильные методы, честные коды ответов.

Из чего состоит сервис

  • Адреса ресурсов: /products — коллекция, /products/42 — один товар, /products/42/reviews — вложенная коллекция.
  • Методы: GET читает, POST создаёт, PUT и PATCH меняют, DELETE удаляет.
  • Коды ответа: 200 — успех, 201 — создано, 400 — ошибка в запросе, 401 и 403 — нет доступа, 404 — ресурса нет, 422 — данные не прошли проверку.
  • Формат: обычно JSON в теле и заголовок Content-Type.
  • Служебное: постраничный вывод, фильтры через параметры, версия в адресе или заголовке, авторизация по токену.

Пример маршрута в WordPress

В WordPress встроен REST API, и свои адреса добавляются через хук rest_api_init. Маршрут ниже отдаёт остаток товара по артикулу:

add_action( 'rest_api_init', function () {
    register_rest_route( 'shop/v1', '/stock/(?P<sku>[\w-]+)', [
        'methods'             => 'GET',
        'callback'            => 'shop_get_stock',
        'permission_callback' => '__return_true',
    ] );
} );

function shop_get_stock( WP_REST_Request $request ) {
    $sku = sanitize_key( $request['sku'] );
    return [ 'sku' => $sku, 'qty' => (int) get_option( "stock_$sku", 0 ) ];
}

Запрос GET /wp-json/shop/v1/stock/sofa-204 вернёт JSON. Параметр permission_callback обязателен: для чтения публичных данных подойдёт __return_true, для записи нужна проверка прав.

Насколько сервис действительно RESTful

Для оценки удобна модель зрелости Леонарда Ричардсона. Уровень 0 — всё идёт одним POST на один адрес. Уровень 1 — появились отдельные ресурсы. Уровень 2 — используются методы и коды HTTP по назначению; на нём находится большинство хороших публичных API. Уровень 3 — ответы содержат ссылки на связанные действия, и клиент может «ходить» по API, как по сайту. Проектированием и подключением таких сервисов занимается разработка API и интеграций.

Обновлено:

Все термины раздела «Backend»

Что будем искать? Например,Продвижение