首页 > 解决方案 > 在搜索端点中使用查询参数

问题描述

我创建了一个端点,如果在 GET 请求中作为查询参数提供,则根据他们的电子邮件地址搜索特定用户:...person/search?email=. 我想扩展此端点,以便它还可以选择接受 SMS 号码,例如...person/search?sms=. 但是,我不希望人们能够同时使用两者进行搜索 - only?email=?sms=.

我会以错误的方式解决这个问题吗?我应该设置一个完全不同的端点来按短信号码搜索吗?

标签: apirest

解决方案


如果你有

person/search?email=misteryperson@gmail.com&sms=0779529293493

然后在您的服务器上,您可以有逻辑来决定如何解释它。我用我的经验和直觉告诉你,根据我开发 API 的经验,这很平静。

在服务器端,您可以使用您的逻辑来确定如何检索,根据此 GET 请求过滤数据集。

如果您想让业务逻辑确定只能使用其中一个,那么您可以决定哪一个优先或抛出异常(如果两者都是通过使用您的代码提供的)。

我认为这是最好的方法,因为

  • 如果以后增加第三种获取人的方式怎么办?您要添加另一个端点吗?
  • 如果你想在某个时候统一它们,你将不得不合并 3 个端点
  • 如果您更新一个工作方式,您可能必须更新另一个工作方式

这里有一个很好的stackoverflow问题,他们讨论了定义搜索端点的最佳方法


推荐阅读