gpt4 book ai didi

c# - 何时使用 HttpResponseMessage 和 Request.CreateResponse

转载 作者:IT王子 更新时间:2023-10-29 04:04:58 27 4
gpt4 key购买 nike

什么时候应该使用HttpResponseMessage对象,什么时候应该使用Request.CreateResponse(...)方法?

另外,HttpResponseMessage 对象和Request.CreateResponse(...) 方法有什么区别?

最佳答案

What is difference between HttpResponseMessage object and Request.CreateResponse(...) method?

很明显,Request.CreateResponse 是创建 HttpResponseMessage 对象的辅助方法。

When we must use HttpResponseMessage object and When we must use Request.CreateResponse(...) method?

如果您想使用内置的内容协商功能,请使用 Request.CreateResponse。当您返回一个对象时,ASP.NET Web API 必须将该对象序列化为响应主体。这通常可以是 JSON 或 XML(其他媒体类型也是可能的,但您需要创建格式化程序)。选择的媒体类型(JSON 或 XML)基于请求内容类型、请求中的 Accept header 等,内容协商是确定要使用的媒体类型的过程。通过使用 Request.CreateResponse,您将自动使用此过程的结果。

另一方面,如果您自己创建 HttpResponseMessage,则必须指定一个媒体格式化程序,对象将基于该媒体格式化程序进行序列化,并且通过自己指定媒体格式化程序,您可以覆盖连接。

编辑以下是如何指定 JSON 格式化程序的示例。

public HttpResponseMessage Get(int id)
{
var foo = new Foo() { Id = id };
return new HttpResponseMessage()
{
Content = new ObjectContent<Foo>(foo,
Configuration.Formatters.JsonFormatter)
};
}

有了这个,即使您使用 Accept:application/xml 发送请求,您也只会得到 JSON。

关于c# - 何时使用 HttpResponseMessage 和 Request.CreateResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22060357/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com