SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
Rapid API
Development
Или как избавиться от рутины
Пару слов про меня
• 7 лет занимаюсь разработкой
• CEO Rademade
• За последних 3 года 70+ приложений
• Сейчас больше в менеджменте и процессах
• Но все так-же люблю разработку
О чем будем говорить?
• Рассмотрим существующие решения для
разработки API
• Обсудим их плюсы и минусы существующих
подходов
• Поделюсь нашей “серебряной пулей”
• Рассмотрим несколько реальных кейсов
Что такое REST API?
Тривиальные задачи API
• CRUD данных
• Авторизация
• Работа с ACL
• Сериализация данных
Существующие решения
Frameworks Serializers and Presenters
• Rails
• Rails-API
• Grape
• Sinatra
• Rabl
• Oat::Serializer
• Roar
Frameworks
Rails-API
Плюсы Минусы
• Производительней по
сравнению с Rails
• Решение множества
тривиальных задач
• Хорошая структура
проекта
• Сложная
кастомизация
• Магия
• Производительность
Rails-API. Пример
Sinatra
Плюсы Минусы
• Производительность
выше чем в Rails-API
• Можем сделать “по
своему”
• Нет полноценной
архитектуры
• Будет дублирование
или велосипеды
Sinatra. Пример
Grape
Плюсы Минусы
• Производительность
в 2.5 раза выше чем
Rails-API
• Автогенарция
документации из
GrapeSwagger
• Отдельное
приложение
• Нет полноценной
архитектуры
• Сложность
кастомизации
Grape. Пример
Serialisation and
Presenters
Rabl
Oat::Serializer
Roar
Теперь главное…
Где есть проблемы?
• Права доступа
• Валидация ошибок
• Стандартные REST методы
• Много дублирования в контролерах
Наша “Серебренная пуля”
• Rails
• Inherited_resource
• Rabl
• CanCan
В чем преимущество
• Генерация CRUD
• Простой ACL
• Удобная сереализация
Inherited resources
Abstract Controller
Кастомизация
Rabl Serialization
• Отлично становиться на архитектуру Rails
• Не нужно менять код контроллеров
• Простая кастомизация и скрытие параметров
ACL
• Добавляем в абстрактный контроллер 1 строку
CanCan. Ability
Как протекает процесс
разработки backend в
Rademade
New application
Replace Gemfile
Generate model
Create routes
Admin controller
API Controller
Rabl
items/index.json.rabl
items/show.json.rabl
>$ rake routes
>$ rails s
API result
Админка. Редактирование
Админка. Список
Что мы выиграли?
• Время на разработку
• Мотивацию команды
• Деньги
Вопросы?

Weitere ähnliche Inhalte

Ähnlich wie Rapid API development

Тимур Лукин - Архитектура и проектирование ПО
Тимур Лукин - Архитектура и проектирование ПОТимур Лукин - Архитектура и проектирование ПО
Тимур Лукин - Архитектура и проектирование ПО
Yandex
 

Ähnlich wie Rapid API development (20)

A polyglot's view of Ruby on Rails – Leonid Shevtsov
A polyglot's view of Ruby on Rails –  Leonid ShevtsovA polyglot's view of Ruby on Rails –  Leonid Shevtsov
A polyglot's view of Ruby on Rails – Leonid Shevtsov
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на Rails
 
Ryazan
RyazanRyazan
Ryazan
 
Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosql
 
SQL vs NoSQL: 
проблема выбора
SQL vs NoSQL: 
проблема выбораSQL vs NoSQL: 
проблема выбора
SQL vs NoSQL: 
проблема выбора
 
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
 
Happydev presentation soa
Happydev presentation soaHappydev presentation soa
Happydev presentation soa
 
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
AzovDevMeetup 2016 | Выстраивание процесса и применение Best Practices с нуля...
 
Стачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработкиСтачка 2017: Golang – опыт промышленной разработки
Стачка 2017: Golang – опыт промышленной разработки
 
D2D DevPro 2017: Golang — опыт промышленной разработки
D2D DevPro 2017: Golang — опыт промышленной разработкиD2D DevPro 2017: Golang — опыт промышленной разработки
D2D DevPro 2017: Golang — опыт промышленной разработки
 
Асинхронный биллинг для службы такси - IzhDevCom November 2014
Асинхронный биллинг для службы такси - IzhDevCom November 2014Асинхронный биллинг для службы такси - IzhDevCom November 2014
Асинхронный биллинг для службы такси - IzhDevCom November 2014
 
Тимур Лукин - Архитектура и проектирование ПО
Тимур Лукин - Архитектура и проектирование ПОТимур Лукин - Архитектура и проектирование ПО
Тимур Лукин - Архитектура и проектирование ПО
 
Allure framework. Пример настройки исчерпывающего репорта на реальном проекте
Allure framework. Пример настройки исчерпывающего репорта на реальном проектеAllure framework. Пример настройки исчерпывающего репорта на реальном проекте
Allure framework. Пример настройки исчерпывающего репорта на реальном проекте
 
Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
 
Автоматизация тестирования: отбрасываем лишнее и проверяем суть
Автоматизация тестирования: отбрасываем лишнее и проверяем сутьАвтоматизация тестирования: отбрасываем лишнее и проверяем суть
Автоматизация тестирования: отбрасываем лишнее и проверяем суть
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
 
WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости соврем...
WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости соврем...WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости соврем...
WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости соврем...
 
Rubt on Rails: 1000 запросов в секунду
Rubt on Rails: 1000 запросов в секундуRubt on Rails: 1000 запросов в секунду
Rubt on Rails: 1000 запросов в секунду
 
Open Source − это не больно (Сергей Нартымов)
Open Source − это не больно (Сергей Нартымов)Open Source − это не больно (Сергей Нартымов)
Open Source − это не больно (Сергей Нартымов)
 

Rapid API development