【发布时间】:2014-05-08 00:48:48
【问题描述】:
我有一个ASP.Net Web API 项目。在我的控制器中是这个简单的“样板”API 方法:
using System.Web.Http;
public class DataController : ApiController
{
private static Random _Random = new Random();
[Route("api/getrandomdoubles/{count:int}")]
[AcceptVerbs("GET", "POST")]
public double[] GetRandomDoubles(int count)
{
var doubles = new double[count];
for (var i = 0; i < count; i++)
{
doubles[i] = _Random.NextDouble();
}
return doubles;
}
}
(请注意,我已经删除了其他方法。)
如果我在浏览器中这样调用 http://localhost:1165/api/GetRandomDoubles/2 我会返回 XML:
<ArrayOfdouble xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<double>0.3777879822895806</double>
<double>0.46401416811347668</double>
</ArrayOfdouble>
如果我这样从 JavaScript 调用它:
d3.json('api/getrandomdoubles/2', function (error, data) {
//Do stuff
});
我返回 JSON [0.6679551008473873,0.9205140638726363]。
什么决定了我的控制器 API 方法何时返回 XML 以及何时返回 JSON?我猜它是根据 HTTP 动词决定的,即 PUT 或 GET 但我看不出它是在哪里指定的。我将如何自己控制返回类型?
========== 编辑 ==========
我刚刚意识到这是特定于浏览器的。在IE中调用http://localhost:1165/api/GetRandomDoubles/2返回JSON,在Chrome中调用返回XML。
【问题讨论】:
标签: asp.net-web-api asp.net-web-api-routing