将多个参数之一发送到 REST API 并使用它
Posted
技术标签:
【中文标题】将多个参数之一发送到 REST API 并使用它【英文标题】:Send one of multiple parameters to REST API and use it 【发布时间】:2016-10-12 22:55:47 【问题描述】:我使用 MEAN 堆栈来开发应用程序。 我正在尝试开发一个宁静的 API 来通过名字或姓氏获取用户 我应该编写一个 get 函数来获取名字和姓氏的用户吗? 编写要由后端处理的 URL 的最佳做法是什么? 我应该使用以下内容吗? 通过名字获取用户:localhost:3000/users?firstname=Joe 按名称获取用户:localhost:3000/users?firstname=Terry 然后检查我的代码中的参数是什么并继续。
换句话说,如果我想将多个参数之一传递给restful API并仅通过一个参数进行搜索,那么最佳实践是什么? 我应该使用内容位置标头吗?
【问题讨论】:
有无数种不同的方式来设计您的 REST URL,并且没有单一的最佳实践。主要的关键是想出你想要拥有的所有不同的 API,并提出一个整体方案,让你以紧凑和一致的方式做你想做的所有事情,这对 API 的使用者来说很简单,并且会让您无需重做任何事情就可以在未来扩展 API。 【参考方案1】:没有单一的最佳实践。有很多不同的方法来设计一个 REST 接口。您可以使用主要基于路径的方案,例如:
http://myserver.com/query/users?firstname=Joe
或主要基于查询参数:
http://myserver.com/query?type=users&firstname=Joe
或者,甚至完全基于路径:
http://myserver.com/query/users/firstname/Joe
只有最后一个方案规定只能传递一个搜索条件,但这可能也是该方案的一个限制方面,因为如果您在将来的某个时间希望能够搜索多个参数,您可能需要重新设计。
一般来说,您需要考虑以下因素:
-
列出您认为您的 REST API 现在以及将来可能要做的所有事情。
设计一个方案,该方案可以预见上述列表中的所有内容并且感觉可扩展(您可以轻松地在其中添加更多内容,而无需重新设计任何内容)。
设计一个对客户将使用它做的所有不同事情感觉一致的方案。例如,应该一致地使用路径和查询参数。您不希望 API 的某些部分专门使用路径段,而另一部分看起来像完全不同的设计,只使用查询参数。两者的适当组合通常是最简洁的设计。
选择对不了解您的功能的人“有意义”的设计。它应该符合逻辑并且具有良好的 REST API,URL 通常是相当自我描述的。
因此,我们不能真正对您的一个 URL 提出具体建议,因为它确实需要在您的整个 API 的整体中加以考虑。
在上面的三个例子中,我不知道你想要做的其他事情,我喜欢第一个,因为它把我感觉像动作的东西放到路径 /query/users
中,然后把将该操作的参数添加到查询字符串中,并且可以轻松扩展以向查询添加更多参数。而且,它读起来很清楚。
显然有许多不同的方法可以成功设计和构建 REST API,因此没有单一的最佳实践。
【讨论】:
以上是关于将多个参数之一发送到 REST API 并使用它的主要内容,如果未能解决你的问题,请参考以下文章
Mandrill 通过 REST API 作为单独的消息发送给多个人
多个字段解析器使用不同的查询参数解析相同的 REST API
将 ZIP 文件发送到基于 REST 的 API,该 API 使用基于 Flutter 的移动应用程序托管在 AWS 上的 SSL TLS (https)