Web API如何返回多种类型

Mat*_*att 24 c# asp.net-web-api

我只是想知道是否可以在单个Web Api中返回多个类型.例如,我希望api返回客户和订单列表(这两组数据可能相互关联,也可能不相关?

cuo*_*gle 37

要返回多个类型,可以将它们包装成匿名类型,有两种可能的方法:

public HttpResponseMessage Get()
{
    var listInt = new List<int>() { 1, 2 };
    var listString = new List<string>() { "a", "b" };

    return ControllerContext.Request
        .CreateResponse(HttpStatusCode.OK, new { listInt, listString });
}
Run Code Online (Sandbox Code Playgroud)

要么:

public object Get()
{
    var listInt = new List<int>() { 1, 2 };
    var listString = new List<string>() { "a", "b" };

    return  new { listInt, listString };
}
Run Code Online (Sandbox Code Playgroud)

还要记住,XML序列化程序不支持匿名类型.因此,您必须确保请求应具有标头:

Accept: application/json
Run Code Online (Sandbox Code Playgroud)

为了接受json格式

  • 注意:请求接受需要是application/json,因为xml序列化程序将响应将出错,不确定该怎么做. (2认同)