URL参数和查询字符串之间有什么区别?

Kon*_*nst 64 url url-parameters query-string

我在URL中看不到参数和查询字符串之间的差别.那么有什么区别,什么时候应该使用?

uno*_*nor 57

查询组件由第一指示?在一个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
Run Code Online (Sandbox Code Playgroud)

(查询组件中允许的字符列表)

查询组件的"格式"取决于URI作者.一个常见的约定(但只有一个约定,就URI标准而言 ¹)是使用查询组件来进行键值对,也就是说.参数,如上面的最后一个例子:bar1=a&bar2=b.

这些参数也可以出现在其他URI组件中,即路径²和片段.就URI标准而言,由您决定使用哪个组件和格式.

示例URI包含路径,查询和片段中的参数:

http://example.com/foo;key1=value1?key2=value2#key3=value3
Run Code Online (Sandbox Code Playgroud)

¹ 关于查询组件的URI标准:

[...]查询组件通常用于以"key = value"对的形式携带识别信息[...]

²URI标准说明路径组件:

[...]分号(";")和等号("=")保留字符通常用于分隔适用于该段的参数和参数值.逗号(",")保留字符通常用于类似目的.


Lau*_*tte 19

参数是键值对,可以出现在URL路径中,并以分号字符(;)开头.

查询字符串出现在路径(如果有)之后,并以问号字符(?)开头.

参数和查询字符串都包含键值对.

GET请求中,参数显示在URL本身中:

<scheme>://<username>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment>
Run Code Online (Sandbox Code Playgroud)

POST请求中,参数可以显示在URL本身中,也可以显示在数据流中(称为内容).

查询字符串始终是URL的一部分.

form-data使用POST方法时,参数可以隐藏在数据流中,因此它们可能不会出现在URL中.是的,POST请求可以将参数定义为表单数据 URL,这不是不一致的,因为参数可以有多个值.

到目前为止,我还没有发现这种行为的解释.我想有时可能会从POST请求中"取消隐藏"参数,甚至让处理GET请求的代码与处理a的代码共享某些部分POST.当然,这只适用于支持URL中的参数的服务器代码.

在您获得更好的见解之前,我建议您仅在请求的form-data数据流中使用参数POST.

资料来源:

每个开发人员应该了解的URL

RFC 3986


KAR*_*N.A 18

两者都是在 GET 请求中传递数据的方式。以下是一些差异 -

参数/查询参数/URL 参数:

https://localhost:3000/用户/5896544

从后端访问:

请求参数.userId = 5896544

查询字符串:

https://localhost:3000/user?userId=5896544

从后端访问:

请求.查询.用户ID = 5896544