1

我有一个带有以下 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参数似乎是必需的,即使它被标记为可为空。如果我只是将它重新添加而没有任何值,它会再次起作用,即使filterorid参数被完全忽略。

这对我来说似乎很奇怪,这是怎么回事?

4

1 回答 1

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

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

本地主机/myapp/api/mycontroller?id=123,456&filter=A,B

我希望这有帮助。

于 2013-11-01T18:10:06.560 回答