如何通过 Web API RESTful Get 方法使用复杂参数

Hom*_*mam 4 rest json asp.net-web-api2

对于 RESTful API,我需要使用 get 来检索列表,但是我想传递以下一些复杂参数作为该方法的输入。

{
  "Filters": [
    {
      "FieldName": "sample string 1",
      "FieldValue": "sample string 2"
    },
    {
      "FieldName": "sample string 1",
      "FieldValue": "sample string 2"
    }
  ],
  "SortField": "sample string 1",
  "SortValue": 0,
  "Page": 2,
  "PageSize": 3
}
Run Code Online (Sandbox Code Playgroud)

由于我无法在 Get 方法中使用 RequestBody,因此参数将如何传递,并且如果我将其设置为 Post,则它将不是 RESTful。

dkr*_*etz 5

使用 POST 而不是 GET等阅读 REST API ,似乎没有 Restful 的规范定义禁止使用 POST 来实现您想要的目的。

在这种情况下,规则可能是“尽力而为”。

此外,由于您似乎同时拥有该进程的主机端和客户端,因此没有太多理由避免 POST。

从根本上来说,没有简单的方法可以将序列化的 json 合并到 URL 中,而这正是 GET 所需要的。