什么是有效的 HTTP GET 参数字符串?

问题描述 投票:0回答:1

HTTP GET 参数字符串的有效格式是什么?

我只经常使用以下格式:

something.php?key1=value1&key2=value2... etc

在我公司网站提供的 API 文档中,有以下示例:

something.php?some=thing=blah
。这有效吗?

很少见,我想我也见过这样的格式:

something.php?foo[]=bar&foo[]=fighters

http parameter-passing
1个回答
0
投票

查询组件是第一个问号

?
之后到片段标识符的字符串。其形式未指定,因此任何字符串都有效

但是,事实上的默认格式是

application/x-www-form-urlencoded
。在此格式中,
key=value
形式的键值对由 & 符号分隔
&
:

http://example.com?key1=value1&key2=value2

更具体地说,键和值由第一个等号分隔

=
:

  • 键和值:
    key=value
  • 空键:
    =value
  • 空值:
    key
    key=

通常,特殊/保留字符和非 ASCII 字符应该是 百分比编码。理论上,由于等号在查询组件的上下文中并不特殊,因此可以不对其进行编码。因此,值可能包含字面上的等号。

带有键

key
和值
va=lue
的示例:
?key=va=lue

不同的后端可能会进一步指定格式。例如,PHP 自动将带有

key[]
的键值对理解为给定键的数组:

在 PHP 中为了方便起见,

key[]=value1&key[]=value2
将导致
$_GET
,如下所示:

array(
  "key" => array(
    0 => value1,
    1 => value2
  )
)

注意:JavaScript

URL
对象根据URL标准解析URL。
searchParams
属性
是根据查询组件根据
application/x-www-form-urlencoded
格式创建的;对于大多数 Web 应用程序和 API 很有用。 “原始”查询组件(加上前导问号
?
)可通过
search
属性
访问。

© www.soinside.com 2019 - 2024. All rights reserved.