如何从Web API aciton以指定的'Accept'格式返回内容
我有一个Web API控制器操作,我想要设置响应头,并以Accept头指定的请求格式返回内容。
不幸的是,如果我对操作的返回类型使用了类型化操作或IHttpActionResult
,我无法设置标题,但内容协商起作用。
我必须返回HttpResponseMessage
才能在动作中指定标题,但是之后我需要为ObjectContent
指定格式化程序。 虽然我只支持XML或JSON类型,但我仍然不想刻录在丑陋的条件中来检查返回类型应该是什么。
有没有办法很好地做到这一点,没有过滤器,属性和自定义泛型返回类型?
public HttpResponseMessage Post([FromBody]QueryModel model)
{
var data = _svc.Query(model);
var resp = new HttpResponseMessage(HttpStatusCode.OK);
// set headers
resp.Content = new ObjectContent(typeof(ResponseModel), data, /* CAN YOU NOT GUESS */);
return resp;
}
解决方案实际上很简单, Request
对象有一个CreateResponse()
方法来创建一个HttpResponseMessage
。
public HttpResponseMessage Post([FromBody]QueryModel model)
{
var data = _svc.Query(model);
var resp = Request.CreateResponse(HttpStatusCode.OK, data);
resp.Content.Headers.Add("X-Moo", "Boo");
return resp;
}
链接地址: http://www.djcxy.com/p/20411.html
上一篇: How to return content in specified 'Accept' format from Web API aciton