【问题标题】:What is the maximum query params url I should use?我应该使用的最大查询参数 url 是多少?
【发布时间】:2020-07-22 17:35:06
【问题描述】:

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

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

例子:

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

我想知道是否有更好的方法:

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

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

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

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

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

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

【问题讨论】:

  • 如果有很多查询,我宁愿在req.body中传递一个JSON对象。

标签: node.js ajax rest express


【解决方案1】:

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

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

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

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

对总 URL 长度的实际限制是大约 2000 个字符,因此您只想确保您的 URL 保持在这个范围内,而不用担心单独查询参数的数量。

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

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

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

【讨论】:

    猜你喜欢
    • 2012-09-29
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    相关资源
    最近更新 更多