我正在为我的REST API使用自定义IHttpActionResult。它运行良好,但我不确定我应该如何检查并返回不同的内容类型(json,xml等)。这就是我目前正在做的事情
public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
HttpResponseMessage response;
// Get our output format
string acceptHeader = _request.Headers.GetValues("Accept").FirstOrDefault();
// Create and build response
response = new HttpResponseMessage(_statusCode)
{
Content = new ObjectContent(_content.GetType(), _content, getContentType(acceptHeader))
};
// Return message
return Task.FromResult(response);
}
private MediaTypeFormatter getContentType(string header)
{
if (header.ToLower() == "application/xml")
{
return new XmlMediaTypeFormatter();
}
else
{
return new JsonMediaTypeFormatter();
}
}
我使用Accept:application / json通过请求传递不同的内容类型,例如。这是在ExecuteAsync方法中传递标头的可接受方式吗?我担心的是,我最终会让这个方法做太多的工作,这可能会导致代码混乱或设计不良。