HTTP URL参数字符串的合法格式有哪些?特殊格式是否有效?
HTTP URL参数格式合法性解析
一、常规键值对格式
日常使用的something.php?key1=value1&key2=value2是完全符合HTTP规范的标准参数格式,也是最通用的写法:
- 单个参数采用
键=值的结构 - 多个参数之间用
&分隔
二、参数值包含=的格式:something.php?some=thing=blah
这个格式本身是合法的。HTTP URL语法允许=出现在参数值中,不过大部分服务器的默认参数解析逻辑会把第一个=作为键和值的分隔符,最终解析结果为:
- 键:
some - 值:
thing=blah
如果公司API文档里这个写法是想表达其他逻辑(比如键为some=thing),那这个写法就不符合常规解析约定,必须依赖自定义的参数解析规则才能生效。
三、带[]的数组式参数格式:something.php?foo[]=bar&foo[]=fighters
这个格式同样合法,它属于后端框架层面的通用约定(比如PHP、Python的Flask/Django等都支持):
- 参数名里的
[]用来标识该参数是数组类型 - 后端通常会把
foo解析为包含bar和fighters两个元素的数组
虽然[]在URL标准里属于需要编码的字符(编码后为%5B和%5D),但现在大部分浏览器和服务器都会自动处理编码和解码,直接写foo[]也能正常工作。
内容的提问来源于stack exchange,提问作者HealerLolCat
相关产品推荐
相关产品推荐

