rapid api development
TRANSCRIPT
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
Rablitems/index.json.rabl
items/show.json.rabl
>$ rake routes
>$ rails s
API result
Админка. Редактирование
Админка. Список
Что мы выиграли?
• Время на разработку
• Мотивацию команды
• Деньги
Вопросы?