REST
Web
Артём Картасов
Потребление информации
• через сайт;
• через мобильное приложение, выпущенное создателем сайта;
• через мобильное приложение, выпущенное кем-то другим;
• сторонние сервисы;
• ...
API Client
Что такое REST?
REpresentational State Transfer
«передача состояния представления» (Никакой картинки в голове)
• архитектурный стиль (не протокол и не стандарт);
• простой интерфейс управления информацией без использования каких-то
дополнительных внутренних прослоек;
• каждая единица информации однозначно определяется глобальным
идентификатором, таким как URL;
• каждый URL в свою очередь имеет строго заданный формат;
REST. Преимущества
Using SOAP:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:body pb="http://www.acme.com/phonebook">
<pb:GetUserDetails>
<pb:UserID>12345</pb:UserID>
</pb:GetUserDetails>
</soap:Body>
</soap:Envelope>
REST:
http://www.acme.com/phonebook/UserDetails/12345
Архитектура REST
• Единый интерфейс (Uniform Interface)
• Отсутствие состояний (Stateless)
• Кеширование ответа (Cacheable)
• Клиент-сервер (Client-Server)
• Многоуровневая система (Layered System)
• "Код по требованию" (Code on Demand - опционально)
REST. Requests
GET /book/ — получить список всех книг
GET /book/3/ — получить книгу номер 3
POST /book/ — добавить книгу (данные в теле запроса)
PUT /book/3 – изменить книгу (данные в теле запроса)
DELETE /book/3 – удалить книгу
REST. Response
HTTP коды:
• 1xx: Informational
• 2xx: Success
• 3xx: Redirection
• 4xx: Client Error
• 5xx: Server Error
Форматы:
• json
• xml
• csv
• other (html, xls и т.д.)
А как проверить?
Curl:
curl -XPOST -H 'Content-type: application/json' -d '{"name":"Alex"}'  http://localhost/api/v1.0/users
Postman:
http://www.getpostman.com/
Рекомендации
• Логические URL вместо физических;
• Постраничный вывод больших объёмов данных;
• Документируйте;
• Действительный адрес пункта в ответе;
• Точное использование методов;
Ресурс-ориентированный дизайн
• Определяем ресурсы;
• Определяем методы у ресурсов;
• Связываем ресурсы;
• Определяем схему данных;
Пример использования на клиенте
<?php
$ch = curl_init(); // create curl resource
curl_setopt($ch, CURLOPT_URL, "example.com"); // set url
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return the transfer as a string
$output = curl_exec($ch); // $output contains the output string
curl_close($ch); // close curl resource to free up system resources
Пример использования на клиенте
$.ajax({
type: 'GET',
url: '/book/',
dataType: 'json'
}).done(function (response) {
// Обработка ответа, например, отображение списка книг на странице
}).fail(function (jqXHR, textStatus) {
// Обработка ошибок, нотификация пользователя
});

Rest

  • 1.
  • 2.
    Потребление информации • черезсайт; • через мобильное приложение, выпущенное создателем сайта; • через мобильное приложение, выпущенное кем-то другим; • сторонние сервисы; • ... API Client
  • 3.
    Что такое REST? REpresentationalState Transfer «передача состояния представления» (Никакой картинки в голове) • архитектурный стиль (не протокол и не стандарт); • простой интерфейс управления информацией без использования каких-то дополнительных внутренних прослоек; • каждая единица информации однозначно определяется глобальным идентификатором, таким как URL; • каждый URL в свою очередь имеет строго заданный формат;
  • 4.
    REST. Преимущества Using SOAP: <?xmlversion="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:body pb="http://www.acme.com/phonebook"> <pb:GetUserDetails> <pb:UserID>12345</pb:UserID> </pb:GetUserDetails> </soap:Body> </soap:Envelope> REST: http://www.acme.com/phonebook/UserDetails/12345
  • 5.
    Архитектура REST • Единыйинтерфейс (Uniform Interface) • Отсутствие состояний (Stateless) • Кеширование ответа (Cacheable) • Клиент-сервер (Client-Server) • Многоуровневая система (Layered System) • "Код по требованию" (Code on Demand - опционально)
  • 6.
    REST. Requests GET /book/— получить список всех книг GET /book/3/ — получить книгу номер 3 POST /book/ — добавить книгу (данные в теле запроса) PUT /book/3 – изменить книгу (данные в теле запроса) DELETE /book/3 – удалить книгу
  • 7.
    REST. Response HTTP коды: •1xx: Informational • 2xx: Success • 3xx: Redirection • 4xx: Client Error • 5xx: Server Error Форматы: • json • xml • csv • other (html, xls и т.д.)
  • 8.
    А как проверить? Curl: curl-XPOST -H 'Content-type: application/json' -d '{"name":"Alex"}' http://localhost/api/v1.0/users Postman: http://www.getpostman.com/
  • 9.
    Рекомендации • Логические URLвместо физических; • Постраничный вывод больших объёмов данных; • Документируйте; • Действительный адрес пункта в ответе; • Точное использование методов;
  • 10.
    Ресурс-ориентированный дизайн • Определяемресурсы; • Определяем методы у ресурсов; • Связываем ресурсы; • Определяем схему данных;
  • 11.
    Пример использования наклиенте <?php $ch = curl_init(); // create curl resource curl_setopt($ch, CURLOPT_URL, "example.com"); // set url curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return the transfer as a string $output = curl_exec($ch); // $output contains the output string curl_close($ch); // close curl resource to free up system resources
  • 12.
    Пример использования наклиенте $.ajax({ type: 'GET', url: '/book/', dataType: 'json' }).done(function (response) { // Обработка ответа, например, отображение списка книг на странице }).fail(function (jqXHR, textStatus) { // Обработка ошибок, нотификация пользователя });