大家都知道参数是键值对的形式
/?key=value
我想问的是规范中有没有对这种格式做出解释?
/?xxx
这个xxx
是当作 key 处理了还是当作 value 处理?还是由服务器实现决定?
1
zhaokun 2021-09-02 09:43:33 +08:00
没有 key 的 value ??孤魂野鬼?
有见过 /{name},/?name=张三,没见过 /?xxx |
2
lynan 2021-09-02 09:43:43 +08:00 1
/?xxx 相当于 xxx: null
|
3
moreant 2021-09-02 09:47:00 +08:00 1
|
4
oh 2021-09-02 09:47:10 +08:00
一般认为是 key 吧,也有一些服务 会把整段 querystring 一起处理,不是看服务器决定,是看业务决定
对服务器而言不管是 ?key=value 还是 ?xxx 都是 querystring |
5
otakustay 2021-09-02 09:48:09 +08:00
按照 URL 的规范,连 key=value 都没有规范,query string 纯粹就是一条 string,都是由服务器实现解析的
|
6
Vegetable 2021-09-02 09:49:30 +08:00
|
7
aqtata OP 谢谢朋友们,看了下各位的回答,看上去规范并没有对格式做出规定,只是一个 string,解释完全由服务器决定。
|
8
libook 2021-09-02 11:47:35 +08:00 2
Querystring 的规范是在 RFC 3986 https://datatracker.ietf.org/doc/html/rfc3986#section-3.4
以及 WHATWG 的规范 https://url.spec.whatwg.org/#concept-url-query 可以看出来,querystring 仅仅是一段 string 而已,RFC 里规定了这个 string 从什么地方开始,到什么地方结束,可以和不可以包含哪些字符,并未规定 querystring 内实际的格式是怎样的。 所以这个是取决于前后端约定的。 但是这种通过 URL 传键值对的需求非常多,所以 HTML5 的制定者,WHATWG 在 URL 规范中直接说明可以用 application/x-www-form-urlencoded 的格式来传递键值对,算是把行业约定固定下来了(还顺便吐槽了一下这个方案比较坑): https://url.spec.whatwg.org/#urlencoded-parsing 大概意思是没有=的话,就当成 name 。 恩,这就是答案了。 WHATWG 又贴心地提供了一个轮子,叫做 URLSearchParams,基于 application/x-www-form-urlencoded 格式进行封装,任何实现了 HTML5 的浏览器都提供了这个 API,而且和 URL API 有联动,后端像 Node.js 也在标准库里将这两个 API 收录,可以直接用了。 |