传递多个数组来获取请求?

时间:2013-11-01 17:57:02

标签: asp.net-web-api asp.net-web-api-routing

我有一个带有以下GET方法的WebAPI 2 ApiController:

public IEnumerable<MyData> Get([FromUri]string[] id, [FromUri]string[] filter, int? count)

我的http请求如下所示:

http://localhost/myapp/api/mycontroller?id=123&id=456&filter=A&filter=B&count=5

生活是美好的。但是这里我错过了一些东西。以下查询字符串也有效:

http://localhost/myapp/api/mycontroller?id=123&id=456&count=5

请注意,缺少filter参数。不是问题。但后来失败了:

http://localhost/myapp/api/mycontroller?id=123&id=456&filter=A&filter=B

count参数似乎是必需的,即使它被标记为可为空。如果我只是将其重新添加到没有值的情况下它会再次起作用,即使filterid参数完全被遗漏也是如此。

这对我来说很奇怪,发生了什么?

1 个答案:

答案 0 :(得分:1)

  1. 确保GET是您想要使用的正确方法。 URL长度存在限制。 IE只有2K。对于某些情况,GET更好,但在我看来,你应该使用POST。

  2. 您无法在网址中提交重复的密钥。您可以做的是使用逗号“,”为同一个键分隔多个值,如下所示:

  3. 本地主机/ MyApp的/ API / ID myController的= 123456&安培;过滤器= A,B

    我希望这会有所帮助。