SlideShare a Scribd company logo
1 of 34
REST on rails. Пишем API и
клиент
REST. Четко и по-хардкору
Когда я первый раз прочитал про REST......
REST. Четко и по-хардкору
REST (Representational State Transfer) - передача
состояния представления
Далее мы узнаем …
что ...
состояние – это как раз то, что
отсутствует в архитектуре REST
в отношениях клиент-сервер
REST. Четко и по-хардкору
Принцип № 1:
Все является ресурсом
●
… c уникальным идентификатором:
✔ /cities/1/mistresses/23
✔ cities/Ulyanovsk/mistresses/Angelika73
REST. Четко и по-хардкору
Принцип № 2:
Объединяй связанные сущности согласно бизнес-
логике
●
Правильно: /cities/1/mistresses/23
Неправильно: /mistresses/23?city_id=1
REST. Четко и по-хардкору
Принцип № 3:
Используй стандартные CRUD методы HTTP:
●
DELETE /cities/1/mistresses/23 — это твой бро
POST updatemistress?id=23&city_id=1&action=delete —
это не твой бро
REST. Четко и по-хардкору
Принцип № 4:
Множественное представление:
✔ JSON
✔ XML
✔ HTML
Принцип № 5:
Все операции клиента с сервером STATELESS
REST. Четко и по-хардкору
Что в итоге?
✔ Простота идеи
✔ Простота разработки
✔ Гибкость
Простое лучше, чем сложное
Routes
CRUD.Index
CRUD.Show
CRUD.Create
CRUD.update
CRUD.destroy
Gem 'active_model_serializers'
Назначение - serializers replace hash-driven
development with object-oriented development
Gem 'active_model_serializers'
Когда сериалайзеры не помогают...
Когда сериалайзеры не помогают...
Gem 'jbuilder'
show.json.jbuilder:
Gem 'jbuilder'
_forecast.json.jbuilder:
Тестирование
Парадокс: в православно оттестированном API не
будет багов!
Документация
Правило: Документация должна быть прозрачной и
полной, как само API
✔ apipie-rails(no need to learn yet another syntax, you
already know Ruby, right?
✔ yardoc
Документация: yardoc
Запросы к сторонним API
Каждые 30 секунд надо распарсить новостные RSS
schedule.rb:
Запросы к сторонним API
Каждые 30 секунд надо распарсить новостные RSS
Запросы к сторонним API
Каждые 30 секунд надо распарсить новостные RSS
daemons/newslist.rb:
Ценные советы
✔ Бэкапы — это твой бро
✔ Логи — это твой бро
✔ Админка для вывода информации из БД — это
твой бро
✔ Идти на поводу у менеджеров и frontend-
разработчиков — это не твой бро
Клиент к API. Гем weary
Weary is a framework and DSL for building
clients for (preferably RESTful) web
service APIs.
At its most minimal, Weary is simply some
nice syntactic sugar around Net/HTTP.
Клиент к API. Гем weary
lib/appstore_client.rb
Клиент к API. Гем weary
lib/appstore_client/config.rb
Клиент к API. Гем weary
lib/appstore_client/client.rb
Клиент к API. Использование
сonfig/initializers/appstore_client.rb
Клиент к API. Использование
lib/appstore_service.rb
Спасибо за внимание!

More Related Content

Similar to Rest api

API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...Ontico
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на RailsAndrei Kaleshka
 
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Ontico
 
Middleware
MiddlewareMiddleware
Middlewaremegakott
 
HighLoad Junior - Как выбирать и как выбрать ДЦ
HighLoad Junior - Как выбирать и как выбрать ДЦHighLoad Junior - Как выбирать и как выбрать ДЦ
HighLoad Junior - Как выбирать и как выбрать ДЦИгорь Мызгин
 
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...Yehor Herasymchuk
 
"Our experience of transferring Laravel microservices to AWS Lambda using Vap...
"Our experience of transferring Laravel microservices to AWS Lambda using Vap..."Our experience of transferring Laravel microservices to AWS Lambda using Vap...
"Our experience of transferring Laravel microservices to AWS Lambda using Vap...Fwdays
 
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...Ontico
 
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"LogeekNightUkraine
 
Что вас ждет на пути реализации Soa (Битрикс отступает)
Что вас ждет на пути реализации Soa (Битрикс отступает)Что вас ждет на пути реализации Soa (Битрикс отступает)
Что вас ждет на пути реализации Soa (Битрикс отступает)Василий Савунов
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...e-Legion
 
Behat-trick: как мы внедряли BDD на наших проектах
Behat-trick: как мы внедряли BDD на наших проектахBehat-trick: как мы внедряли BDD на наших проектах
Behat-trick: как мы внедряли BDD на наших проектахSQALab
 
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...Ontico
 
Дикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG ЕкатеринбургДикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG ЕкатеринбургКирилл Толкачёв
 
!2hl++2008 Restful Architechture
!2hl++2008 Restful Architechture!2hl++2008 Restful Architechture
!2hl++2008 Restful ArchitechtureOntico
 
RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)Sergey Skvortsov
 
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...Ontico
 
HighLoad Junior '16 Как сравнить и выбрать хостинг-провайдера
HighLoad Junior '16 Как сравнить и выбрать хостинг-провайдераHighLoad Junior '16 Как сравнить и выбрать хостинг-провайдера
HighLoad Junior '16 Как сравнить и выбрать хостинг-провайдераИгорь Мызгин
 
разработка 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
 
Как спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важноКак спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важноBubon Makabra
 

Similar to Rest api (20)

API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на Rails
 
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
 
Middleware
MiddlewareMiddleware
Middleware
 
HighLoad Junior - Как выбирать и как выбрать ДЦ
HighLoad Junior - Как выбирать и как выбрать ДЦHighLoad Junior - Как выбирать и как выбрать ДЦ
HighLoad Junior - Как выбирать и как выбрать ДЦ
 
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
 
"Our experience of transferring Laravel microservices to AWS Lambda using Vap...
"Our experience of transferring Laravel microservices to AWS Lambda using Vap..."Our experience of transferring Laravel microservices to AWS Lambda using Vap...
"Our experience of transferring Laravel microservices to AWS Lambda using Vap...
 
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...
 
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
Andrii Gryshchenko: "An Overview of CQRS and Event Sourcing"
 
Что вас ждет на пути реализации Soa (Битрикс отступает)
Что вас ждет на пути реализации Soa (Битрикс отступает)Что вас ждет на пути реализации Soa (Битрикс отступает)
Что вас ждет на пути реализации Soa (Битрикс отступает)
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
 
Behat-trick: как мы внедряли BDD на наших проектах
Behat-trick: как мы внедряли BDD на наших проектахBehat-trick: как мы внедряли BDD на наших проектах
Behat-trick: как мы внедряли BDD на наших проектах
 
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...
 
Дикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG ЕкатеринбургДикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG Екатеринбург
 
!2hl++2008 Restful Architechture
!2hl++2008 Restful Architechture!2hl++2008 Restful Architechture
!2hl++2008 Restful Architechture
 
RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)RESTful Architechture (Highload++ 2008)
RESTful Architechture (Highload++ 2008)
 
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
Как сравнить и выбрать хостинг-провайдера или О чем умалчивают маркетологи / ...
 
HighLoad Junior '16 Как сравнить и выбрать хостинг-провайдера
HighLoad Junior '16 Как сравнить и выбрать хостинг-провайдераHighLoad Junior '16 Как сравнить и выбрать хостинг-провайдера
HighLoad Junior '16 Как сравнить и выбрать хостинг-провайдера
 
разработка 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
 
Как спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важноКак спроектировать хороший API и почему это так важно
Как спроектировать хороший API и почему это так важно
 

Rest api