42
Rapid API Development Или как избавиться от рутины

Rapid API development

Embed Size (px)

Citation preview

Page 1: Rapid API development

Rapid API DevelopmentИли как избавиться от рутины

Page 2: Rapid API development

Пару слов про меня• 7 лет занимаюсь разработкой

• CEO Rademade

• За последних 3 года 70+ приложений

• Сейчас больше в менеджменте и процессах

• Но все так-же люблю разработку

Page 3: Rapid API development

О чем будем говорить?• Рассмотрим существующие решения для разработки API

• Обсудим их плюсы и минусы существующих подходов

• Поделюсь нашей “серебряной пулей”

• Рассмотрим несколько реальных кейсов

Page 4: Rapid API development

Что такое REST API?

Page 5: Rapid API development

Тривиальные задачи API

• CRUD данных

• Авторизация

• Работа с ACL

• Сериализация данных

Page 6: Rapid API development

Существующие решенияFrameworks Serializers and Presenters

• Rails

• Rails-API

• Grape

• Sinatra

• Rabl

• Oat::Serializer

• Roar

Page 7: Rapid API development

Frameworks

Page 8: Rapid API development

Rails-APIПлюсы Минусы

• Производительней по сравнению с Rails

• Решение множества тривиальных задач

• Хорошая структура проекта

• Сложная кастомизация

• Магия

• Производительность

Page 9: Rapid API development

Rails-API. Пример

Page 10: Rapid API development

SinatraПлюсы Минусы

• Производительность выше чем в Rails-API

• Можем сделать “по своему”

• Нет полноценной архитектуры

• Будет дублирование или велосипеды

Page 11: Rapid API development

Sinatra. Пример

Page 12: Rapid API development

GrapeПлюсы Минусы

• Производительность в 2.5 раза выше чем Rails-API

• Автогенарция документации из GrapeSwagger

• Отдельное приложение

• Нет полноценной архитектуры

• Сложность кастомизации

Page 13: Rapid API development

Grape. Пример

Page 14: Rapid API development

Serialisation and Presenters

Page 15: Rapid API development

Rabl

Page 16: Rapid API development

Oat::Serializer

Page 17: Rapid API development

Roar

Page 18: Rapid API development

Теперь главное…

Page 19: Rapid API development

Где есть проблемы?

• Права доступа

• Валидация ошибок

• Стандартные REST методы

• Много дублирования в контролерах

Page 20: Rapid API development

Наша “Серебренная пуля”

• Rails

• Inherited_resource

• Rabl

• CanCan

Page 21: Rapid API development

В чем преимущество

• Генерация CRUD

• Простой ACL

• Удобная сереализация

Page 22: Rapid API development

Inherited resources

Page 23: Rapid API development

Abstract Controller

Page 24: Rapid API development

Кастомизация

Page 25: Rapid API development

Rabl Serialization

• Отлично становиться на архитектуру Rails

• Не нужно менять код контроллеров

• Простая кастомизация и скрытие параметров

Page 26: Rapid API development

ACL• Добавляем в абстрактный контроллер 1 строку

Page 27: Rapid API development

CanCan. Ability

Page 28: Rapid API development

Как протекает процесс разработки backend в

Rademade

Page 29: Rapid API development

New application

Page 30: Rapid API development

Replace Gemfile

Page 31: Rapid API development

Generate model

Page 32: Rapid API development

Create routes

Page 33: Rapid API development

Admin controller

Page 34: Rapid API development

API Controller

Page 35: Rapid API development

Rablitems/index.json.rabl

items/show.json.rabl

Page 36: Rapid API development

>$ rake routes

Page 37: Rapid API development

>$ rails s

Page 38: Rapid API development

API result

Page 39: Rapid API development

Админка. Редактирование

Page 40: Rapid API development

Админка. Список

Page 41: Rapid API development

Что мы выиграли?

• Время на разработку

• Мотивацию команды

• Деньги

Page 42: Rapid API development

Вопросы?