【问题标题】:WebApi: set formatter with custom format stringWebApi:使用自定义格式字符串设置格式化程序
【发布时间】: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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-11-28
      • 2016-06-05
      • 2014-07-07
      • 2014-07-09
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多