更改Web API响应格式

本文关键字:格式 响应 API Web 更改 | 更新日期: 2023-09-27 18:16:58

我在SelfHost配置上有一个APIController,它生成像XML文档这样的响应:

public XmlDocument Get(int id)
{
    XmlDocument doc;
    doc = repo.get(id); // simplified
    if(doc != null)
        return doc;
    throw new HttpResponseExeption(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Something went terribly wrong."));
}

在例外情况下,我想发送回客户端JSON格式的响应,而不是XML,所以我可以正确解析jquery AJAX请求(错误回调)中的错误消息:

JSON.parse (jqXHR.responseText) .Message;

我怎么能改变HttpResponseException的格式化器"在飞行中"是JSON,考虑到jQuery请求发送一个dataType: 'xml'为正确的流?

更改Web API响应格式

如果我理解正确,似乎您总是希望错误以JSON而不是内容协商作为XML发送回来?这看起来很奇怪,因为如果客户端请求XML格式的响应体,他们通常也希望以XML格式发送错误消息。

但如果你真的必须这样做,你可以这样做:

public XmlDocument Get(int id)
{
    XmlDocument doc;
    doc = repo.get(id); // simplified
    if(doc != null)
        return doc;
    throw new HttpResponseExeption(
        Request.CreateResponse(HttpStatusCode.NotFound, new HttpError("Something went terribly wrong."), Configuration.Formatters.JsonFormatter));
}