我在 URL 中没有看到参数和查询字符串之间有太大区别。那么,其中一种有什么区别,什么时候应该使用另一种呢?
查询组件由 URI 中的第一个
?
指示。 “查询字符串”可能是同义词(URI 标准中未使用该术语)。
带有查询组件的 HTTP URI 的一些示例:
http://example.com/foo?bar
http://example.com/foo/foo/foo?bar/bar/bar
http://example.com/?bar
http://example.com/?@bar._=???/1:
http://example.com/?bar1=a&bar2=b
查询组件的“格式”由 URI 作者决定。一个常见的约定(但就 URI 标准而言,只不过是一个约定1)是使用键值对的查询组件。 参数,如上面最后一个示例:
bar1=a&bar2=b
。
此类参数也可能出现在其他 URI 组件中,即路径²和片段。就 URI 标准而言,由您决定使用哪个组件和哪种格式。
在路径、查询和片段中包含参数的示例 URI:
http://example.com/foo;key1=value1?key2=value2#key3=value3
¹ URI 标准规定 关于查询组件:
[…]查询组件通常用于以“键=值”对的形式携带标识信息[…]
² URI 标准规定 关于路径组件:
[…] 分号(“;”)和等号(“=”)保留字符通常用于分隔适用于该段的参数和参数值。逗号(“,”)保留字符通常用于类似目的。
参数是可以出现在 URL 路径中的键值对,并以分号字符 (
;
) 开头。
查询字符串出现在路径(如果有)之后,并以问号字符 (
?
) 开头。
参数和查询字符串都包含键值对。
在
GET
请求中,参数出现在 URL 本身中:
<scheme>://<username>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment>
在
POST
请求中,参数可以出现在 URL 本身中,也可以出现在数据流(称为内容)中。
查询字符串始终是 URL 的一部分。
使用 POST 方法时,参数可以隐藏在form-data
数据流中,因此它们可能不会出现在 URL 中。是的,
POST
请求可以将参数定义为URL中的表单数据和,这并不不一致,因为参数可以有多个值。 到目前为止,我还没有找到对此行为的解释。我想有时从
POST
请求中“取消隐藏”参数可能很有用,甚至让处理
GET
请求的代码与处理
POST
的代码共享某些部分。当然,这仅适用于支持 URL 中的参数的服务器代码。在您获得更好的见解之前,我建议您仅在
form-data
请求的
POST
数据流中使用参数。来源:
参数/查询参数/URL参数:
https://localhost:3000/user/5896544后台访问:
请求.params.userId = 5896544
查询字符串:
https://localhost:3000/user?userId=5896544后台访问:
请求.query.userId = 5896544
所以,从我的角度来看,我看到这样的事情:
URL 参数:URL 中存在的任何参数。它们有几个不同的缺陷:
https://stackoverflow.com/questions/39266970
39266970 就是问题的 ID
?
https://stackoverflow.com/questions/39266970?slowClient=true
,使用该参数,您可以对客户端计算机进行编程,以针对在慢速计算机中运行的浏览器执行任何特定操作
anchor 的东西,它是另一个参数,因为它指示浏览器在给定页面上集中登陆的位置。例如:https://www.i18next.com/translation-function/plurals#interval-plurals(导航,等到页面完全加载,然后看看浏览器如何直接转到网页的该部分)
路径参数与查询参数
假设我们有基本 urlhttps://gov.philippines.com
,路径参数示例;
https://gov.philippines.com/sign-up
https://gov.philippines.com/sign-in
所以基本上路径参数是/sign-up
或
/sign-in
,简而言之,它是
base-url
中的扩展路径,而查询参数;
https://gov.philippines.com/sign-up?for=membership
https://gov.philippines.com/sign-in?as=admin
?for=membership
和
?as=admin
是带有
key
和
value
的查询参数,大多数用例是用于过滤请求