SlideShare a Scribd company logo
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) {
// Обработка ошибок, нотификация пользователя
});

More Related Content

PDF
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
PPTX
PPTX
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
PPTX
Bitacora
PPTX
Отказоустойчивость веб-проекта: мониторинг, резервирование, обслуживание
PDF
Cyber Bionics #iotconfua
PDF
«Импортозамещающие абсорбционные тепловые насосы и холодильные машины»
 
PPTX
07 (Лунєв Є.) Высокотехнологическое оборудование для производства электроэнер...
Кейсы использования PWA для партнерских предложений в Delivery Club, Никита Б...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
Bitacora
Отказоустойчивость веб-проекта: мониторинг, резервирование, обслуживание
Cyber Bionics #iotconfua
«Импортозамещающие абсорбционные тепловые насосы и холодильные машины»
 
07 (Лунєв Є.) Высокотехнологическое оборудование для производства электроэнер...

Viewers also liked (20)

PPTX
Дизайн и юзабилити коммерческих сайтов
PDF
Ринат Ибрагимов - Региональное SEO: продвижение сайтов, созданных на  Drupal
PDF
«Проект усиления энергобезопасности, развития энергетики и энергоэффективност...
 
PDF
Frigin ener sys_ekbpromo_voroneg
PDF
Вероника Табакова. Дизайн сайтов. Бизнес-пирожки 2016
PPTX
энергетика таджикистана
PDF
Seo проектирование сайта
PDF
Запуск мобильной версии сайта: разбор полетов (Надежда Маринчева, CoMagic)
PPT
Web дизайн
PPTX
3.2-1 Л. Мелисанде "Зеленый" экономический переход в энергетическом секторе К...
PPTX
Андрей Уманский "10 ошибок тех, кто начинает продавать в интернете"
PDF
ТЭК РОССИИ — 2015. Электроэнергетика.
PPTX
Презентация 2.5.1.1 - Подраздел Система электроснабжения (ИОС1)
PDF
«Договорные условия работы малой генерации на розничных рынках электрической ...
 
PPT
жанибек мухаметкалиев
PDF
Практическое руководство по оценке удобства использования сайта. Вебинар WebP...
PPTX
Sveto tunneli 03_11_2016 (1)
PPTX
Саканян Е.И. «Фармакопея стран ЕАЭС и Государственная фармакопея Российской Ф...
PDF
AzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём Кравченко
PDF
Энергетика сегодня. База для инноваций
Дизайн и юзабилити коммерческих сайтов
Ринат Ибрагимов - Региональное SEO: продвижение сайтов, созданных на  Drupal
«Проект усиления энергобезопасности, развития энергетики и энергоэффективност...
 
Frigin ener sys_ekbpromo_voroneg
Вероника Табакова. Дизайн сайтов. Бизнес-пирожки 2016
энергетика таджикистана
Seo проектирование сайта
Запуск мобильной версии сайта: разбор полетов (Надежда Маринчева, CoMagic)
Web дизайн
3.2-1 Л. Мелисанде "Зеленый" экономический переход в энергетическом секторе К...
Андрей Уманский "10 ошибок тех, кто начинает продавать в интернете"
ТЭК РОССИИ — 2015. Электроэнергетика.
Презентация 2.5.1.1 - Подраздел Система электроснабжения (ИОС1)
«Договорные условия работы малой генерации на розничных рынках электрической ...
 
жанибек мухаметкалиев
Практическое руководство по оценке удобства использования сайта. Вебинар WebP...
Sveto tunneli 03_11_2016 (1)
Саканян Е.И. «Фармакопея стран ЕАЭС и Государственная фармакопея Российской Ф...
AzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём Кравченко
Энергетика сегодня. База для инноваций
Ad

Similar to Rest (20)

PDF
Разработка мобильного и веб интерфейса для Caché
PDF
Web and mobile development for intersystems caché, Eduard Lebedyuk
PPTX
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
PDF
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
PDF
Павел Брылов, Skype
PDF
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
PPTX
Андрей Завадский "Бессерверная архитектура"
PPTX
разработка RESTful api with all bells and whistles
PPTX
SECON'2016. Алексеев Олег, Живой API
PPTX
Мировые информационные ресурсы. Лекция 5
PDF
crypto web presentation
PPTX
Решения Brocade для построения IP сетей будущего
PDF
PDF
Сетевая инфраструктура ЦОД, ориентированная на приложения и коммутаторы Nexus...
PPT
Drupal и мобильные устройства, Комелин Константин
PPT
Drupal и мобильные устройства комелин константин
PPT
Drupal и мобильные устройства
PPTX
Remoto powered by Windows Azure
PDF
Экскурс в мир WEB разработки
Разработка мобильного и веб интерфейса для Caché
Web and mobile development for intersystems caché, Eduard Lebedyuk
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Павел Брылов, Skype
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Андрей Завадский "Бессерверная архитектура"
разработка RESTful api with all bells and whistles
SECON'2016. Алексеев Олег, Живой API
Мировые информационные ресурсы. Лекция 5
crypto web presentation
Решения Brocade для построения IP сетей будущего
Сетевая инфраструктура ЦОД, ориентированная на приложения и коммутаторы Nexus...
Drupal и мобильные устройства, Комелин Константин
Drupal и мобильные устройства комелин константин
Drupal и мобильные устройства
Remoto powered by Windows Azure
Экскурс в мир WEB разработки
Ad

More from Noveo (20)

PPTX
Гуманитарные специальности в IT-индустрии
PPTX
Box model, display and position (HTML5 тема 07 - box model, display position)
PPTX
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
PPTX
Стилизация текста (HTML5 тема 05 - стилизация текста)
PPTX
Семантика текста (HTML5 тема 04 - семантика текста)
PPTX
Основы CSS (HTML5 тема 02 - основы CSS)
PPTX
Структура HTML документа (HTML5 тема 01 - структура html документа)
PPTX
Yii2
PPTX
Сессии и авторизация
PPTX
PHP basic
PPTX
PHP Advanced
PPTX
PHP and MySQL
PPTX
MySQL
PDF
Push Notifications (Lecture 22 – push notifications)
PDF
RxJava+RxAndroid (Lecture 20 – rx java)
PDF
Работа с соцсетями (Lecture 19 – social)
PDF
Работа с геоданными (Lecture 18 – geolocation)
PDF
Animations (Lecture 17 – animations)
PDF
Toolbar (Lecture 16 – toolbar)
PDF
Material Design (Lecture 15 – material design)
Гуманитарные специальности в IT-индустрии
Box model, display and position (HTML5 тема 07 - box model, display position)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Стилизация текста (HTML5 тема 05 - стилизация текста)
Семантика текста (HTML5 тема 04 - семантика текста)
Основы CSS (HTML5 тема 02 - основы CSS)
Структура HTML документа (HTML5 тема 01 - структура html документа)
Yii2
Сессии и авторизация
PHP basic
PHP Advanced
PHP and MySQL
MySQL
Push Notifications (Lecture 22 – push notifications)
RxJava+RxAndroid (Lecture 20 – rx java)
Работа с соцсетями (Lecture 19 – social)
Работа с геоданными (Lecture 18 – geolocation)
Animations (Lecture 17 – animations)
Toolbar (Lecture 16 – toolbar)
Material Design (Lecture 15 – material design)

Rest

  • 2. Потребление информации • через сайт; • через мобильное приложение, выпущенное создателем сайта; • через мобильное приложение, выпущенное кем-то другим; • сторонние сервисы; • ... API Client
  • 3. Что такое REST? REpresentational State Transfer «передача состояния представления» (Никакой картинки в голове) • архитектурный стиль (не протокол и не стандарт); • простой интерфейс управления информацией без использования каких-то дополнительных внутренних прослоек; • каждая единица информации однозначно определяется глобальным идентификатором, таким как URL; • каждый URL в свою очередь имеет строго заданный формат;
  • 4. 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
  • 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) { // Обработка ошибок, нотификация пользователя });