【发布时间】:2015-04-13 13:50:14
【问题描述】:
假设我有一个自定义扩展 .foo,这意味着预期的数据类型应该是“JSON 式”文档。例如,假设我有 2 个可以支持 JSON 的格式化程序、标准 JSON.Net 和一个自定义 JSON 格式化程序,它对 JSON 文档做一些奇怪的事情。我只想将第二个 JSON 格式化程序用于非常特定的 api 调用,并且我可以在客户端更改 api 端点,所以我想做这样的事情:
[Route("~/api/Widgets/{id:int}.{format}")]
[ResponseType(typeof(Widget))]
public async Task<HttpResponseMessage> GetWidget(int id)
{
//stuff goes here
}
因此,导航到
https://myserver.com/api/Widgets/1234.foo
...应该使用我的 Widget 1234 的“特殊”格式化程序来格式化响应,但是
https://myserver.com/api/Widgets/1234.json
...应该返回一个标准的 JSON 文档。
如何指定我的自定义格式化程序仅在 format 标识符为“foo”时才被调用?如果我需要使用相同的格式化程序支持“foo”和“bar”格式怎么办?
我想指出,我很清楚这似乎是一件愚蠢的事情,返回一个本质上格式错误的 JSON 文档。 (试图在通过时删掉“替代”或“最佳实践”的答案......)
【问题讨论】:
标签: c# asp.net-web-api asp.net-mvc-routing formatter