Enviar búsqueda
Cargar
Roman Gorel: Building better APIs on Rails.
•
Descargar como PPTX, PDF
•
3 recomendaciones
•
488 vistas
Sphere Consulting Inc
Seguir
Building better APIs on Rails.
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 50
Descargar ahora
Recomendados
Building better APIs on rails
Building better APIs on rails
Roman Gorel
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Kirill Mokevnin
Server-side JavaScript
Server-side JavaScript
Media Gorod
Chef
Chef
Kirill Mokevnin
Ua
Ua
Naim Shafiev
Thumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - Ansible
Alexey Remnev
Ember.js - Назад в Будущее - Odessa JS 2014
Ember.js - Назад в Будущее - Odessa JS 2014
Andrey Listochkin
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Andrey Subbota
Recomendados
Building better APIs on rails
Building better APIs on rails
Roman Gorel
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
Kirill Mokevnin
Server-side JavaScript
Server-side JavaScript
Media Gorod
Chef
Chef
Kirill Mokevnin
Ua
Ua
Naim Shafiev
Thumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - Ansible
Alexey Remnev
Ember.js - Назад в Будущее - Odessa JS 2014
Ember.js - Назад в Будущее - Odessa JS 2014
Andrey Listochkin
Chef коротко об инфраструктуре
Chef коротко об инфраструктуре
Andrey Subbota
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
HappyDev
Cpanm
Cpanm
Naim Shafiev
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
Oleksii Okhrymenko
Особенности совместной работы Ruby и Oracle
Особенности совместной работы Ruby и Oracle
Nikita Shilnikov
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
Nikolay Samokhvalov
AnyEvent::HTTPBenchmark
AnyEvent::HTTPBenchmark
Naim Shafiev
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Aleksander Alekseev
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru
Nikolay Samokhvalov
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
Nikita Borzykh
Highload осень 2012 лекция 10
Highload осень 2012 лекция 10
Technopark
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. Web
7bits
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
7bits
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
Mysql replication
Mysql replication
Serge Tyatin
15 - Web-технологии. Сессии и авторизация
15 - Web-технологии. Сессии и авторизация
Roman Brovko
09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки
Roman Brovko
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Ontico
А.Горбов, А.Фефелов. Секреты АБАК-ПРЕСС
А.Горбов, А.Фефелов. Секреты АБАК-ПРЕСС
it-people
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
FDConf
How to manage an open source project
How to manage an open source project
Juanjo Bazán
Anton Vasiljev: Continuations in Ruby.
Anton Vasiljev: Continuations in Ruby.
Sphere Consulting Inc
Más contenido relacionado
La actualidad más candente
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
HappyDev
Cpanm
Cpanm
Naim Shafiev
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
Oleksii Okhrymenko
Особенности совместной работы Ruby и Oracle
Особенности совместной работы Ruby и Oracle
Nikita Shilnikov
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
Nikolay Samokhvalov
AnyEvent::HTTPBenchmark
AnyEvent::HTTPBenchmark
Naim Shafiev
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Aleksander Alekseev
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru
Nikolay Samokhvalov
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
Nikita Borzykh
Highload осень 2012 лекция 10
Highload осень 2012 лекция 10
Technopark
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. Web
7bits
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
7bits
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
Mysql replication
Mysql replication
Serge Tyatin
15 - Web-технологии. Сессии и авторизация
15 - Web-технологии. Сессии и авторизация
Roman Brovko
09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки
Roman Brovko
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Ontico
А.Горбов, А.Фефелов. Секреты АБАК-ПРЕСС
А.Горбов, А.Фефелов. Секреты АБАК-ПРЕСС
it-people
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
FDConf
La actualidad más candente
(20)
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
2015-12-05 Вадим Литвинов - Нагрузочное тестирование с MZBench
Cpanm
Cpanm
Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
Особенности совместной работы Ruby и Oracle
Особенности совместной работы Ruby и Oracle
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
AnyEvent::HTTPBenchmark
AnyEvent::HTTPBenchmark
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Истинный DevOps. Секрет 42.
Истинный DevOps. Секрет 42.
Highload осень 2012 лекция 10
Highload осень 2012 лекция 10
Курс Java-2016. Занятие 09. Web
Курс Java-2016. Занятие 09. Web
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Mysql replication
Mysql replication
15 - Web-технологии. Сессии и авторизация
15 - Web-технологии. Сессии и авторизация
09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
А.Горбов, А.Фефелов. Секреты АБАК-ПРЕСС
А.Горбов, А.Фефелов. Секреты АБАК-ПРЕСС
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
Destacado
How to manage an open source project
How to manage an open source project
Juanjo Bazán
Anton Vasiljev: Continuations in Ruby.
Anton Vasiljev: Continuations in Ruby.
Sphere Consulting Inc
Anton Shemerey: Refactoring and SOLID principles in Ruby.
Anton Shemerey: Refactoring and SOLID principles in Ruby.
Sphere Consulting Inc
OpenSource Project. Where to Start? Dmitriy Zaporozhets
OpenSource Project. Where to Start? Dmitriy Zaporozhets
Sphere Consulting Inc
Valeriy Prokopchuk: Validators in Migrations.
Valeriy Prokopchuk: Validators in Migrations.
Sphere Consulting Inc
Roman Kuznietsov: Zeromq: sockets on steroids.Zero mq
Roman Kuznietsov: Zeromq: sockets on steroids.Zero mq
Sphere Consulting Inc
Destacado
(6)
How to manage an open source project
How to manage an open source project
Anton Vasiljev: Continuations in Ruby.
Anton Vasiljev: Continuations in Ruby.
Anton Shemerey: Refactoring and SOLID principles in Ruby.
Anton Shemerey: Refactoring and SOLID principles in Ruby.
OpenSource Project. Where to Start? Dmitriy Zaporozhets
OpenSource Project. Where to Start? Dmitriy Zaporozhets
Valeriy Prokopchuk: Validators in Migrations.
Valeriy Prokopchuk: Validators in Migrations.
Roman Kuznietsov: Zeromq: sockets on steroids.Zero mq
Roman Kuznietsov: Zeromq: sockets on steroids.Zero mq
Similar a Roman Gorel: Building better APIs on Rails.
Опыт разработки и тестирования RESTful JSON сервиса
Опыт разработки и тестирования RESTful JSON сервиса
Ilya Chesnokov
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
Timur Shemsedinov
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
7bits
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
Andrey Rebrov
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Ontico
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
Oleksandr Torosh
бегун
бегун
HighLoad2009
Павел Федотовский «Документация REST API c использованием Swagger»
Павел Федотовский «Документация REST API c использованием Swagger»
SpbDotNet Community
бегун
бегун
HighLoad2009
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
Ontico
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Ontico
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
Timur Batyrshin
Erlang tasty & useful stuff
Erlang tasty & useful stuff
Dmitry Demeshchuk
Платформа .NET Core глазами PHP-разработчика
Платформа .NET Core глазами PHP-разработчика
Георгий Драк
Корпоративное приложение на Rails
Корпоративное приложение на Rails
Andrei Kaleshka
API: взгляд потребителя
API: взгляд потребителя
Oleg Alistratov
Разработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для Caché
InterSystems CEE
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
Омские ИТ-субботники
Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard Lebedyuk
InterSystems
Управление облачной инфраструктурой
Управление облачной инфраструктурой
dddpaul
Similar a Roman Gorel: Building better APIs on Rails.
(20)
Опыт разработки и тестирования RESTful JSON сервиса
Опыт разработки и тестирования RESTful JSON сервиса
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Building deployment pipeline - DevOps way
Building deployment pipeline - DevOps way
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
бегун
бегун
Павел Федотовский «Документация REST API c использованием Swagger»
Павел Федотовский «Документация REST API c использованием Swagger»
бегун
бегун
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
Cloud APIs. Обзор API западных провайдеров и API Scalaxy (Нат Гаджибалаев)
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
Как Vagrant и Chef ускорили разработку в несколько раз / Тимур Батыршин (Cina...
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
Erlang tasty & useful stuff
Erlang tasty & useful stuff
Платформа .NET Core глазами PHP-разработчика
Платформа .NET Core глазами PHP-разработчика
Корпоративное приложение на Rails
Корпоративное приложение на Rails
API: взгляд потребителя
API: взгляд потребителя
Разработка мобильного и веб интерфейса для Caché
Разработка мобильного и веб интерфейса для Caché
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard Lebedyuk
Управление облачной инфраструктурой
Управление облачной инфраструктурой
Roman Gorel: Building better APIs on Rails.
1.
Building better APIs
on Rails Roman Gorel @ kiev.rb #3
2.
Рельсы - не
всегда лучше ● Интегрируется с рельсами как Rack mountable engine ● Меньше время ответа ● Ничего лишнего
3.
rails-api gem ●
Не реквайрит то, что не нужно для API (например, темплейты) ● Ускоряет время ответа ● Уменьшает потребляемые ресурсы
4.
Уберем ненужное ●
Для новых приложений ● Для существующих приложений
5.
Добавим роуты
6.
Неймспейсы, версии, формат
7.
Субдомен http://api.pumpkins.ua/v1/pumpkins
8.
Субдомены в development
env ● /etc/hosts ● api.lvh.me ● pow
9.
Структура контроллеров
10.
Делаем API аббревиатурой
config/initializers/inflections.rb Api::V1::PumpkinsController → API::V1::PumpkinsController
11.
Контроллер
12.
Разные форматы данных?
13.
Сокращаем код
14.
Как поменять представление?
15.
Куча гемов для
кастомизации представления ● Темплейты: rabl, jbuilder ● Презентеры: representable, acts_as_api ● Сериалайзеры: ActiveModelSerializers
16.
Путь Очумелых Ручек
app/presenters/api/v1/pumpkin_presenter.rb
17.
Путь Очумелых Ручек
18.
Больше гибкости!
19.
Больше гибкости!
20.
А как насчет
коллекций? app/presenters/api/array_presenter.rb
21.
Документация
22.
RDoc FAIL
23.
Документируем красиво ●
swagger ● apipie ● rspec_api_documentation
24.
Документация через тесты
● Не захламляет контроллер ● Проще поддерживать в актуальном состоянии ● Прогоняет тесты при генерации ● Меньше писать руками ● Заставляет писать тесты :)
25.
Документируем из тестов
Gemfile spec/support/rspec_api_documentation.rb
26.
Документируем из тестов
spec/acceptance/pumpkins_spec.rb
27.
Описываем методы
28.
Описываем методы
29.
Два в одном
$ rake docs:generate ● Прогоняет тесты ● Генерирует доку
30.
Наслаждаемся результатом
31.
Наслаждаемся результатом
32.
Аутентификация
33.
Базовая Аутентификация
34.
Базовая Аутентификация
35.
FAIL :(
36.
Digest Auth +
token ● Делаем POST /sessions с захэшированными логином и паролем ● Получаем в ответ токен ● Используем токен в последующих запросах
37.
Digest Auth
38.
Digest Auth $
curl -v --digest -u "Roman:password" -X POST --data {} http://api.pumpkins.ua:3000/v1/sessions
39.
Token
40.
Token $ curl
-H 'Authorization: Token token="48990736263c9f573ff634a1cb66cbcd"' http://api.pumpkins.ua:3000/v1/pumpkins
41.
Проблемы ● Сложная
аутентификация ● Открытый токен
42.
JSON Web token
● Реализации под множество платформ ● Простота использования ● Секьюрность jwt.io
43.
Аутентификация с JWT
44.
Аутентификация с JWT
$ curl -H 'Authorization: Token token="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxfQ.y8f9uijQS6sxeX58 dQH4fwJYLxvmBt3HHAvnrj5w1Rg"' http://api.pumpkins.ua:3000/v1/pumpkins
45.
Структура JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX
2lkIjoxfQ.y8f9uijQS6sxeX58dQH4fwJYLxvmBt3HHAvn rj5w1Rg ● Заголовок (тип сообщения и алгоритм, JSON + Base64) ● Тело сообщения (JSON + Base64) ● Подпись (тело + заголовок, зашифрованные секретным ключом)
46.
Попробуем подменить данные
тело сообщения
47.
Тем не менее,
токен все еще можно перехватить!
48.
Expiration
49.
github.com/rgorel/pumpkins
50.
Ваши вопросы
Descargar ahora