api - 在搜索端点中使用查询参数
问题描述
我创建了一个端点,如果在 GET 请求中作为查询参数提供,则根据他们的电子邮件地址搜索特定用户:...person/search?email=
. 我想扩展此端点,以便它还可以选择接受 SMS 号码,例如...person/search?sms=
. 但是,我不希望人们能够同时使用两者进行搜索 - only?email=
或?sms=
.
我会以错误的方式解决这个问题吗?我应该设置一个完全不同的端点来按短信号码搜索吗?
解决方案
如果你有
person/search?email=misteryperson@gmail.com&sms=0779529293493
然后在您的服务器上,您可以有逻辑来决定如何解释它。我用我的经验和直觉告诉你,根据我开发 API 的经验,这很平静。
在服务器端,您可以使用您的逻辑来确定如何检索,根据此 GET 请求过滤数据集。
如果您想让业务逻辑确定只能使用其中一个,那么您可以决定哪一个优先或抛出异常(如果两者都是通过使用您的代码提供的)。
我认为这是最好的方法,因为
- 如果以后增加第三种获取人的方式怎么办?您要添加另一个端点吗?
- 如果你想在某个时候统一它们,你将不得不合并 3 个端点
- 如果您更新一个工作方式,您可能必须更新另一个工作方式
这里有一个很好的stackoverflow问题,他们讨论了定义搜索端点的最佳方法
推荐阅读
- r - Debian 上的 CRAN 软件包错误。可以在 Windows 中查看照片,而不是在 Debian 中
- javascript - 如何检查 string.endsWith 并忽略空格
- python - python 3表现webdriver - OOP传递驱动程序
- python - Python将图像存储在列表图像数据中无法转换为浮点数
- c# - 在模拟域用户帐户的应用程序池下运行的 WCF 服务为一个域帐户而不是另一个域帐户打印到网络打印机
- c# - EF Core 2.0 使用 where 条件时不加载相关实体
- javascript - jQuery可以顺序执行吗?
- sql - 更改 oracle 版本会改变 workd 的顺序吗?
- html - 折叠后我的引导导航栏不再打开
- python - Python列表理解问题