我的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方法使用自定义格式化程序输出葡萄实体。
答案 0 :(得分: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