首页 > 解决方案 > 我应该使用的最大查询参数 url 是多少?

问题描述

我正在开发一个节点应用程序,它有一个过滤故事的端点。

我接受最多五个查询参数。我不知道这是否是查询参数过多,但我需要这些参数在数据库中进行过滤。

例子:

http://localhost:3000/api/search?location=wherever&duration=123

我想知道是否有更好的方法来做到这一点:

http://localhost:3000/api/search?filter=location:wherever,duration:123

甚至我可以从 url 发送一个字符串化对象,但这对我来说似乎是一个丑陋的解决方案。

我放在这里的第二种方式对我来说看起来更干净,但我不确定如何处理参数。

在第一个选项中,我可以传递req.query给我的服务并处理对象,但是以另一种方式处理过滤器值会更难。

你怎么看?您如何处理这种情况以将过滤器发送到您的背部?

提前感谢,如果已经回答,我很抱歉,我没有找到类似的帖子。

标签: node.jsajaxrestexpress

解决方案


我应该使用的最大查询参数 url 是多少?

查询参数的数量没有限制,有很多参数也不会造成任何问题。

我接受最多五个查询参数。我不知道这是否是查询参数过多,但我需要这些参数在数据库中进行过滤。

五是低,不高 - 你绝对没问题。

URL 总长度的实际限制是大约 2000 个字符,因此您只想确保您的 URL 舒适地低于该长度,而不用担心单独查询参数的数量。

如果总 URL 长度太长或可能太长,我只会考虑另一种发送查询的方法。除此之外,您可以拥有任意数量的查询参数。它并不是人类直接消费的东西,它只是你的代码生成和解析的东西,所以数量真的无关紧要。

也就是说,如果您有 100 个单独的查询参数可以同时使用,我想知道您在做什么以及是否有更好的方法来完成它或表达查询,但这不是技术问题或限制。

结构上的替代方案是使用 POST 而不是 GET 并将数据作为 JSON 或类似的东西发送。您可以通过这种方式发送尽可能多的数据,但是 POST 会改变 URL 的可用性,因为它不能像 GET 那样直接链接到或添加书签或复制到 URL 栏中。


推荐阅读