我使用Jersey作为我的RESTful Web服务框架。 我已经进行了2次新的@GET REST调用,以便搜索数据库中的对象。 这些REST调用应该提供2个不同的组件。
电子邮件和 user_id 是2个不同的唯一标识符。
一种选择是使用不同的路径启用2个不同的@GET REST调用,例如:
".../api/users/search/id/:user_id"
".../api/users/search/email/:email"
为了使尽可能简单且更加通用以满足未来的需求,我正在寻找将这两个REST调用合并到其QueryParam中的具有不同标识符的1个路径的方法。
在搜索了一个好示例,接着是这种REST调用的最佳实践之后,我不确定这样的合并是否是一种好的做法。
我不确定的主要问题是如何将路径构建为通用路径。 问题是:
答案 0 :(得分:1)
嗯,一个解决方案是将新的queryParameters添加到uri,从而使用户能够使用相同的资源但使用新参数,例如:/uri/search/email?aa@aa.com&user_id=userAdam
然后,您将在服务器端需要在同一方法中处理所有这些不同的场景。因此,您可以深入了解if / else / switch类型的东西。
然后,您必须处理返回的JSON对象。显然,如果你有合同,你需要遵循它,因此如果客户期望完全不同的响应,很难从一个资源提供它们。因此,如果电子邮件查询响应与user_id查询响应明显不同,则可能会从同一资源返回它。
我的5美分。也许我误解了你。