我有一个带有以下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
参数似乎是必需的,即使它被标记为可为空。如果我只是将其重新添加到没有值的情况下它会再次起作用,即使filter
或id
参数完全被遗漏也是如此。
这对我来说很奇怪,发生了什么?
答案 0 :(得分:1)
确保GET是您想要使用的正确方法。 URL长度存在限制。 IE只有2K。对于某些情况,GET更好,但在我看来,你应该使用POST。
您无法在网址中提交重复的密钥。您可以做的是使用逗号“,”为同一个键分隔多个值,如下所示:
本地主机/ MyApp的/ API / ID myController的= 123456&安培;过滤器= A,B
我希望这会有所帮助。