如何将过滤器参数传递给 REST API 中的 GET 请求?

How to pass filter arguments to GET requests in REST APIs?

我正在构建一个 RESTful 网络服务:

一切如常。

这些客户有一个名为 authorized 的 属性。在我的网站 UI 上,为了管理这些,我为授权和未授权的客户分开了表格。当然,我不想为了显示未授权的而从服务器加载所有客户端。

问题是,如何通过 RESTful URL 过滤客户端?因为我想做一个适当的 RESTful API,查询参数不是一个选项。

我已经考虑过另外做 GET /unauthorizedClientsGET /authorizedClients 但这似乎不对,因为我仍然会使用 DELETE/clients/%clientId%` 来删除一个客户端。

我想不出解决这个问题的好方法。欢迎任何有关如何解决此问题的提示。

我会选择 /clients/unauthorized/clients/authorized。您需要像 directories 这样的资源 URI。

这样,删除针对 /client/[id] 资源的客户端就没有问题了。

我只是想知道是什么阻止了您使用查询参数。它们是在 REST API 中过滤资源集合的最合适的方式。使用查询参数不会使您的 API less RESTful.

您可以拥有以下内容:

  • 授权:GET /clients?status=authorized
  • 未授权:GET /clients?status=unauthorized

另一种选择是:

  • 授权:GET /clients/authorized
  • 未授权:GET /clients/unauthorized

虽然你真的应该考虑查询参数。