如何将过滤器参数传递给 REST API 中的 GET 请求?
How to pass filter arguments to GET requests in REST APIs?
我正在构建一个 RESTful 网络服务:
- 在
GET /clients
下,我正在获取所有已知客户的列表。
- 在
GET /clients/1
下,我正在获取 clientId
1. 的客户端对象
一切如常。
这些客户有一个名为 authorized
的 属性。在我的网站 UI 上,为了管理这些,我为授权和未授权的客户分开了表格。当然,我不想为了显示未授权的而从服务器加载所有客户端。
问题是,如何通过 RESTful URL 过滤客户端?因为我想做一个适当的 RESTful API,查询参数不是一个选项。
我已经考虑过另外做 GET /unauthorizedClients
和 GET /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
虽然你真的应该考虑查询参数。
我正在构建一个 RESTful 网络服务:
- 在
GET /clients
下,我正在获取所有已知客户的列表。 - 在
GET /clients/1
下,我正在获取clientId
1. 的客户端对象
一切如常。
这些客户有一个名为 authorized
的 属性。在我的网站 UI 上,为了管理这些,我为授权和未授权的客户分开了表格。当然,我不想为了显示未授权的而从服务器加载所有客户端。
问题是,如何通过 RESTful URL 过滤客户端?因为我想做一个适当的 RESTful API,查询参数不是一个选项。
我已经考虑过另外做 GET /unauthorizedClients
和 GET /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
虽然你真的应该考虑查询参数。