0

Я использую rails-api с сериализаторами, и я особенно ищут простой способ реализовать «разреженный набор полей», это означает, что я хочу, чтобы мой Rails API отображал (json) только поля, которые я даю в параметре fields:Внедрение разреженного поля в Rails API

http://api.website.com/v1/ressource/id?fields=field1,field2 

Я знаю, мы можем получить field1, field2 и т.д. с params[:field] в контроллер Ressource, но я до сих пор не уверен: проблема должна быть закреплена в контроллер? модель? сериализатор?

Я видел несколько сообщений по этой теме, и никто, наконец, не дал сильного и универсального ответа на эту проблему. Насколько это хорошо известно Rails API?

Благодарим вас за дополнительные разъяснения и рекомендации.

+0

Простите, я действительно понял, что мой ответ не имеет смысла. –

ответ

1

Обычно поля ограничены ответом api через сериализаторы.

  • подход 1: если ваши значения поля динамического В контроллере, вы можете сделать что-то вроде этого: скажем, ваш ресурс соответствует ресурсу

    fieldset = params[:fields].split(',') 
    resource_id = params[:id] 
    resource = Resource.where(id: resource_id).select([fieldset]) 
    render json: resource.first 
    
  • подхода 2: если вы фиксированная перестановка полей, вы можете использовать разные сериализаторы для каждой комбинации.

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

    resource = Resource.find_by(id: resource_id) 
    serializer = params[:serializer] 
    render json: resource.first, serializer: serializer: Serializer1 if serializer == 'serializer1' 
    
0

Использование мастер-ветви ActiveModelSerializers, вы можете использовать fields вариант адаптера JsonApi, который делает именно то, что вы ожидаете.

+0

Спасибо за ваш ответ. Знаете ли вы, что эта ветка будет включена в rails-api, которая появится, как было объявлено, с Rails 5? –

 Смежные вопросы

  • Нет связанных вопросов^_^