0

我的 API 有时会以 CSV 格式返回数据。但是根据返回的数据,CSV 格式化程序的行为会有所不同(作为分层数据,应该根据数据按照特定规则展平)所以我编写了许多自定义 CSV 格式化程序。但我发现我无法动态更改格式化程序:

我正在使用并想要使用Grape::Entities,API 应该能够将数据公开为 json、xml 和 csv。

我试过了 :

desc 'My API 1'
get '/' do
  formatter :csv, CustomCsvFormatter
  present my_data, with: MyEntity 
end

但它失败了,因为在这种情况下格式化程序不是定义的方法。

我试过了 :

desc 'My API 1'
formatter :csv, CustomCsvFormatter
get '/' do
  present my_data, with: MyEntity 
end

desc 'My API 2'
formatter :csv, CustomOtherCsvFormatter
get '/blublu' do
  present my_data, with: MyEntity 
end

但仅CustomOtherCsvFormatter适用于所有方法。最后一个格式化程序替换先前定义的。

有没有办法动态更改格式化程序?

你有没有看到其他方法来做我想做的事?:根据 API 方法使用自定义格式化程序输出葡萄实体。

4

1 回答 1

0

使用嵌套资源,使其工作:

resource :bidules do
  desc "My API 1"
  formatter :csv, CustomCsvFormatter
  get '/' do
    present my_data, with: MyEntity
  end

  resource :blublu do
    desc "My API 2"
    formatter :csv, CustomOtherCsvFormatter
    get '/' do
      present my_data, with: MyEntity
    end
  end

end
于 2015-09-29T10:22:14.550 回答