Разработать JSON API на RubyOnRails

Цена договорная • электронные деньги
22 августа 2014, 23:32 • 8 откликов • 70 просмотров
Здравствуйте!

Нужно разработать быстрое JSON API на RubyOnRails + MongoDB

Требования к API:



1) Пример url: /api/v1/nodes , либо /api/v1/nodes.json

2) По-умолчанию объекты рендерятся так, как указано в
файле-сериалайзере (active_model_serializers, rabl или что-то еще - что
быстрее), но также есть возможность указать только те поля, которые нужны.
Например: /api/v1/nodes?fields=id,name,user_id - вернет записи, состоящие
только из полей id,name,user_id , либо указать название сериализатора (/api/v1/nodes?serializer=NodeIndexSerializer).

3) Должна быть возможность сделать разный набор полей при
рендеринге списком (/api/v1/nodes) и при просмотре одной записи
(/api/v1/nodes/1) , в идеале, чтобы была возможность также настроить по-разному
отдаваемые поля при создании, обновлении и удалении записи.

4) Должна быть возможность проверить права на
просмотр/редактирование/удаление записи и полей записи. (через cancan скорее
всего, сейчас уже есть авторизация через devise)

5) API должно быть документировано например через Swagger

6) Также все это дело нужно покрыть тестами, да побольше)



Требования к кешированию:



1) Хотелось бы, чтобы это делалось как-то в руби-стиле. Что-то
типа include caching , ну или как-то так) , но при этом, чтобы была возможность
перегрузить методы.



2) Нужно продумать, как будет очищаться кеш после
создания/обновления/удаления модели, при том условии, что запись может быть в
большом количестве разных ассоциаций с другими моделями.



3) Будет довольно большое количество разных фильтров, поисков,
и сортировок. Нужно продумать, как быть с кешированием в этом случае. По-сути,
на каждое поле каждой модели есть хотя бы по одному фильтру и запросы из-за
этого могут быть самые разные.

4) В качестве хранилища пока остановились на redis, но рассматриваем и другие варианты.

5) Записей будет огромное количество, посещаемость также на уровне, все это нужно учесть сразу, чтобы не пришлось потом переписывать

В заявках указывайте примерную стоимость работы, либо стоимость вашего часа. Также указывайте, с чем работали.