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

Posted

技术标签:

【中文标题】在 C# 的 RESTful API 中更改/附加请求标头【英文标题】:Changing/appending request headers in RESTful API in c# 【发布时间】:2012-11-20 08:27:37 【问题描述】:

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

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

当我从浏览器访问此 API 时,它以 XML 形式返回,但当客户端的应用程序请求它时,它默认返回 JSON 结果。他们通过将内容类型放入标头中以 XML 形式获得结果,但他们不想这样做,并且希望默认获得 XML 结果。

我希望我清楚这一点。如果没有,请告诉我。

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

[更改] 我很想知道当我在服务器上收到请求时是否可以通过某种方式修改请求标头。

它在 MVC3、C# 中。

【问题讨论】:

【参考方案1】:

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

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

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

客户端调用附带的内容类型是什么?

更新:

看看这个页面:

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

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

根据请求内容类型调整动作结果

【讨论】:

嗨,亚历克斯,不,我基本上不是在对他们进行冷嘲热讽。我只是返回对象。我不会根据请求标头转换它。我无法检查内容类型是什么,所以我把问题放在这里,这样我就可以知道我是否可以修改它们。 看这个页面:aleembawany.com/2009/03/27/…这是MVC以前版本的解决方案,但它会给你一个你需要的解决方案的想法:根据请求内容类型调整动作结果跨度> 嗨,亚历克斯,感谢您的帮助。我想我找到了它,我把它写成一个答案,所以其他人可能会觉得它有用。【参考方案2】:

我在这里找到答案并发布。我刚刚删除了除 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

谢谢

【讨论】:

以上是关于在 C# 的 RESTful API 中更改/附加请求标头的主要内容,如果未能解决你的问题,请参考以下文章

GO语言(十三):使用 Go 和 Gin 开发 RESTful API(下)

要在 C# 中使用 RESTful Web 服务,我应该使用 HttpWebRequest 吗?

C# Web Api一个小例子

RESTful API 设计:更新 (PUT) 中的不可更改数据是不是应该是可选的?

RESTful API 的令牌认证:是不是应该定期更改令牌?

Java / Spring中与Restful API交互的工具[重复]