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

时间:2015-04-13 13:50:14

标签: c# asp.net-web-api asp.net-mvc-routing formatter

我们假设我有一个自定义扩展程序.foo,这意味着预期的数据类型应该是" JSON-esque"文献。例如,假设我有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

...应该使用我的&#34;特殊&#34;格式化响应。 Widget 1234的格式化程序,但

https://myserver.com/api/Widgets/1234.json

...应该返回一个标准的JSON文档。

format标识符是&#34; foo&#34;?时,如何指定仅调用自定义格式化程序?如果我需要支持&#34; foo&#34;和&#34; bar&#34;具有相同格式化程序的格式?

我想指出我很清楚这似乎是一件愚蠢的事情,返回一个本质上格式错误的JSON文档。 (试图削减&#34;替代&#34;或&#34;最佳实践&#34;在通行证上回答......)

1 个答案:

答案 0 :(得分:0)

我认为这个问题涵盖了你所需要的:

Return either xml or json from MVC web api based on request

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