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

时间:2016-06-22 10:44:35

标签: rest restful-architecture restful-url

我正在构建一个RESTful Web服务:

  • GET /clients下,我收到了所有已知客户的列表。
  • GET /clients/1下,我正在获取clientId 1的客户端对象。

应有的一切。

这些客户有一个名为authorized的属性。在我的Web UI上管理这些,我为已授权和未授权的客户分隔了表。当然,我不想从服务器加载所有客户端只是为了显示未经授权的客户端。

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

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

我想不出一个令人愉快的方法来解决这个问题。关于如何解决这个问题的任何提示都是受欢迎的。

2 个答案:

答案 0 :(得分:1)

我只是想知道阻止您使用查询参数的原因。它们是过滤REST API中的资源集合的最合适方式。使用查询参数不会使您的API 更少 RESTful

您可以拥有以下内容:

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

另一种选择是:

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

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

答案 1 :(得分:0)

我会选择/clients/unauthorized/clients/authorized。您需要taylor资源URI,如目录

这样,根据/client/[id]资源删除客户端没有任何问题。