首页 > 解决方案 > URL 参数输入似乎不一致

问题描述

我已经查看了有关 URL 参数的多个说明,这些说明都建议了 2 种方法:

参数可以跟在 / 正斜杠之后,也可以由参数名称和参数值指定。所以要么:

1)  http://numbersapi.com/42

或者

2)  http://numbersapi.com/random?min=10&max=20

对于第二个,我使用 ? 提供参数名称和参数值。我还使用 & 号提供了多个参数。

现在我看到下面的请求可以正常工作但不符合上述规则:

 http://numbersapi.com/42?json

我知道请求将 42 设置为参数,但为什么是?后面不跟参数名称,只跟值。还有 ? 似乎被用作&符号???

标签: apiweburl

解决方案


来自维基百科

每个 HTTP URL 都符合通用 URI 的语法。URI 通用语法由五个组件的分层序列组成:

URI = scheme:[//authority]path[?query][#fragment]

其中权限组件分为三个子组件

authority = [userinfo@]host[:port]

这在语法图中表示为:

语法图

如您所见,URL?结束部分并开始部分。pathquery

查询部分通常是一个以&- 分隔的字符串name=value对,但它不是必须的,json该部分的有效值也是如此query

或者,正如维基百科文章所说:

  • 前面有问号 ( )的可选查询?组件,包含非分层数据的查询字符串。它的语法没有很好的定义,但按照惯例,通常是由分隔符分隔的属性-值对序列。

请求处理器将name=value缺少=符号的一对视为name=.

例如,如果您正在编写Servlet代码并调用servletRequest.getParameter("json"),它将""为问题中的最后一个 URL 返回一个空字符串 ()。


推荐阅读