SlideShare a Scribd company logo
1 of 12
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

Viewers also liked

Viewers also liked (20)

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

Similar to Rest

Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Ontico
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Ontico
 
разработка RESTful api with all bells and whistles
разработка RESTful api with all bells and whistles разработка RESTful api with all bells and whistles
разработка RESTful api with all bells and whistles
Yandex
 
NPAPI
NPAPINPAPI
Сетевая инфраструктура ЦОД, ориентированная на приложения и коммутаторы Nexus...
Сетевая инфраструктура ЦОД, ориентированная на приложения и коммутаторы Nexus...Сетевая инфраструктура ЦОД, ориентированная на приложения и коммутаторы Nexus...
Сетевая инфраструктура ЦОД, ориентированная на приложения и коммутаторы Nexus...
Cisco Russia
 
Drupal и мобильные устройства, Комелин Константин
Drupal и мобильные устройства, Комелин КонстантинDrupal и мобильные устройства, Комелин Константин
Drupal и мобильные устройства, Комелин Константин
PVasili
 
Drupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константинDrupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константин
drupalconf
 
Remoto powered by Windows Azure
Remoto powered by Windows AzureRemoto powered by Windows Azure
Remoto powered by Windows Azure
Vitaly Baum
 

Similar to Rest (20)

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

More from Noveo

More from Noveo (20)

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