0

我使用rails-api与串行,我特别找实行“疏字段集”一个简单的方法稀疏字段集,这意味着我要我的Rails API渲染(JSON)只有我给田在参数fields实施Rails的API

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

我知道我们能field1field2等与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的主分支,您可以使用JsonApi适配器的fields选项,它实际需要的内容。

+0

谢谢,你知道,如果该分支将包含在其中谈到,作为宣布,使用Rails 5 Rails的API? –