在URL中,参数和查询字符串之间没有太大区别。那么有什么区别?什么时候应该使用另一个?
Answers:
的查询组件由第一指示?
在一个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标准而言,仅是约定¹)是将查询组件用于键/值对,也就是。参数,如上面的最后一个示例:bar1=a&bar2=b
。
这样的参数也可能出现在其他URI组件中,即path²和片段。就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的一部分。
form-data
使用POST方法时,参数可以埋在数据流中,因此它们可能不会出现在URL中。是的,POST
请求可以将参数定义为表单数据并在URL中定义,这并不矛盾,因为参数可以具有多个值。
到目前为止,我还没有对此行为的任何解释。我想有时候从POST
请求中“取消隐藏”参数,甚至让处理GET
请求的代码与处理请求的代码共享某些部分可能很有用。POST
。当然,这仅适用于支持URL中参数的服务器代码。
在您获得更好的见解之前,建议您仅在请求的form-data
数据流中使用参数POST
。
资料来源: