在c#中的RESTful API中更改/附加请求标头

时间:2012-11-20 08:27:37

标签: api restful-architecture

我有一个非常奇怪的情况(可能只适用于我)。我开发了一个RESTful API。默认情况下,它根据客户端在标头中发送的内容类型将结果返回为JSON / XML / TEXT。

现在客户端说他想将响应设置为默认为XML。我的意思是客户端不会在标头中发送任何内容类型,默认情况下它会将请求作为XML发送。

当我从浏览器访问此API时,它将其作为XML返回,但是当客户端的应用程序请求它时,它默认返回JSON结果。他们将结果作为XML获取,方法是将内容类型放在头文件中,但他们不想这样做,并且希望默认情况下获得XML结果。

我希望我对此很清楚。如果没有,请告诉我。

任何帮助将不胜感激。感谢

[变更] 我有兴趣知道在服务器上收到请求时是否有某种方法可以修改请求标头。

它在MVC3,C#中。

2 个答案:

答案 0 :(得分:0)

您无法更改请求标头,只需查询它们。

我猜你在控制器中将结果作为一个简单的字符串返回,不是吗?

并且,您根据从请求中读取的内容类型切换结果,不是吗?

客户电话的内容类型是什么?

更新:

看看这个页面:

http://aleembawany.com/2009/03/27/aspnet-mvc-create-easy-rest-api-with-json-and-xml/

这是以前版本的MVC的解决方案,但它会让您了解所需的解决方案:

根据请求内容类型

调整操作结果

答案 1 :(得分:0)

我找到答案并在此发帖。我刚刚删除了除xml类型之外的其他返回类型,如下所示:

void ConfigureApi(HttpConfiguration config)
{
    // Remove the JSON formatter
    config.Formatters.Remove(config.Formatters.JsonFormatter);

    // or

    // Remove the XML formatter
    config.Formatters.Remove(config.Formatters.XmlFormatter);
}

有关详情,请点击以下链接 http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization

由于