【发布时间】:2017-04-12 05:07:18
【问题描述】:
我有一个名为GetCats() 的[HttpGet] web api 方法,它返回Cat 对象的集合。
我添加了参数skip 和take 以允许分页。
但是要求已经增加,现在必须有可能进行复杂过滤,例如"PropertyName", "Value", "Type" 格式的过滤器集合。 "CatName", "Mittens", "EqualTo" 和以"PropertyName", "Direction" 格式对过滤器进行排序,例如"CatAge", "Descending".
Skip and Take 也是必需的。
构建此过滤器对象时,它可能会非常大且复杂。因此,似乎将其放入 QueryString 不再可行,尤其是在有多个过滤器的情况下,因为您需要一种方法将它们组合在一起。
我正在寻找解决方案 - 我想我可以使用 [HttpPost] 并发布过滤器,但对于 HTTP 方法来说似乎是错误的。我不确定我是否可以以某种方式将对象编码到查询字符串中并优雅地解码它。
有人可以建议解决这个问题吗?我怀疑将复杂的参数传递给 GET 以检索数据集合一定是一个常见问题。
【问题讨论】:
-
是的,您绝对可以在查询字符串上传递一个复杂对象。默认情况下,WebAPI 期望查询字符串上的对象用于获取,而正文上的对象用于帖子。是的,如果您的网址达到容量上限,您可以随时发布您的复杂对象。
标签: c# asp.net-web-api http-method