使用GET REST调用以查找所有相关对象

时间:2017-03-17 07:42:28

标签: java jersey jersey-client

我使用Jersey作为我的RESTful Web服务框架。 我已经进行了2次新的@GET REST调用,以便搜索数据库中的对象。 这些REST调用应该提供2个不同的组件。

  • 第一个组件的详细信息中包含user_id。
  • 第二个组件的详细信息包含电子邮件。

电子邮件 user_id 是2个不同的唯一标识符。

一种选择是使用不同的路径启用2个不同的@GET REST调用,例如:

".../api/users/search/id/:user_id"
".../api/users/search/email/:email"

为了使尽可能简单且更加通用以满足未来的需求,我正在寻找将这两个REST调用合并到其QueryParam中的具有不同标识符的1个路径的方法。

在搜索了一个好示例,接着是这种REST调用的最佳实践之后,我不确定这样的合并是否是一种好的做法。

我不确定的主要问题是如何将路径构建为通用路径。 问题是:

  1. 在1个REST调用中将这2个不同的路径合并为1个路径是一个好习惯吗?如果是,请举例。
  2. 如果合并这些路径是一种不好的做法,我应该如何处理使用新标识符搜索的未来功能请求?为每个标识符构建新的REST调用的想法听起来有问题。

1 个答案:

答案 0 :(得分:1)

嗯,一个解决方案是将新的queryParameters添加到uri,从而使用户能够使用相同的资源但使用新参数,例如:/uri/search/email?aa@aa.com&user_id=userAdam

然后,您将在服务器端需要在同一方法中处理所有这些不同的场景。因此,您可以深入了解if / else / switch类型的东西。

然后,您必须处理返回的JSON对象。显然,如果你有合同,你需要遵循它,因此如果客户期望完全不同的响应,很难从一个资源提供它们。因此,如果电子邮件查询响应与user_id查询响应明显不同,则可能会从同一资源返回它。

我的5美分。也许我误解了你。