将多个参数之一发送到 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 (POST) 的方法

多个字段解析器使用不同的查询参数解析相同的 REST API

将参数发布到 Rest API

将 ZIP 文件发送到基于 REST 的 API,该 API 使用基于 Flutter 的移动应用程序托管在 AWS 上的 SSL TLS (https)

将多个参数传递给rest API - Spring