WebApi:使用自定义格式字符串设置格式化程序



假设我有一个自定义扩展.foo,这意味着预期的数据类型应该是"JSON式"文档。例如,假设我有两个可以支持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"one_answers"bar"格式,该怎么办?

我想指出的是,我很清楚这似乎是一件愚蠢的事情,返回一个基本上格式错误的JSON文档。(试图在通行证上切断"替代方案"或"最佳实践"答案…)

我认为这个问题正好涵盖了您所需要的:

根据请求从MVC web api返回xml或json

JSON/XML格式化程序在那里使用,但它与自定义格式化程序的工作方式相同。

最新更新