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? –