rapid api development

Post on 19-Jul-2015

930 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

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

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

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

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

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

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

• Деньги

Вопросы?

top related