api - URL 参数输入似乎不一致
问题描述
我已经查看了有关 URL 参数的多个说明,这些说明都建议了 2 种方法:
参数可以跟在 / 正斜杠之后,也可以由参数名称和参数值指定。所以要么:
1) http://numbersapi.com/42
或者
2) http://numbersapi.com/random?min=10&max=20
对于第二个,我使用 ? 提供参数名称和参数值。我还使用 & 号提供了多个参数。
现在我看到下面的请求可以正常工作但不符合上述规则:
http://numbersapi.com/42?json
我知道请求将 42 设置为参数,但为什么是?后面不跟参数名称,只跟值。还有 ? 似乎被用作&符号???
解决方案
来自维基百科:
每个 HTTP URL 都符合通用 URI 的语法。URI 通用语法由五个组件的分层序列组成:
URI = scheme:[//authority]path[?query][#fragment]
其中权限组件分为三个子组件:
authority = [userinfo@]host[:port]
这在语法图中表示为:
如您所见,URL?
结束部分并开始部分。path
query
查询部分通常是一个以&
- 分隔的字符串name=value
对,但它不是必须的,json
该部分的有效值也是如此query
。
或者,正如维基百科文章所说:
- 前面有问号 ( )的可选查询
?
组件,包含非分层数据的查询字符串。它的语法没有很好的定义,但按照惯例,通常是由分隔符分隔的属性-值对序列。
请求处理器将name=value
缺少=
符号的一对视为name=
.
例如,如果您正在编写Servlet
代码并调用servletRequest.getParameter("json")
,它将""
为问题中的最后一个 URL 返回一个空字符串 ()。
推荐阅读
- html - 如何使填充都相同?
- python - 带替换的 Python 条件枚举
- html - 用多种颜色填充文本
- ios - 在 ionic 应用程序中使用 for 循环适用于 linux 但不适用于 ios
- laravel - v-for循环Vue中的动态V模型名称
- python - 在python中填充n级PostgreSQL表
- kotlin - 验证 List 的值
存在于 Json 对象中并返回 True 或 False - javascript - 在 lighntingChart 中拟合折线图
- python - 在 Collab 中自动验证 gspread
- sql-server - 如何将加密证书从 Amazon RDS SQL Server 数据库备份到 S3