面试官提问:
GET 方法中参数的写法是固定的吗?是否可以自定义格式?
应聘者回答:
从规范角度来看,GET 请求参数的写法是推荐规范,但并不是强制固定格式。协议只规定了格式的语义解释方式,并不限制开发者如何组织 URL 参数。只要服务端能够正确解析,参数格式是可以自定义的。
一、GET 请求参数的推荐格式
标准格式如下:
GET /api/user?id=123&name=Tom HTTP/1.1
- 使用
?
将 URL 路径与参数部分分隔; - 使用
&
分隔多个键值对; - 使用
=
分隔键与值。
这是 URL 查询字符串的通用写法,兼容主流 Web 框架、浏览器、服务器。
二、格式可自定义,但需保证双方约定一致
从底层来看:
- 浏览器或客户端构造完整的 URL;
- 服务端从 HTTP 请求行中的 URL 中提取参数部分;
- 剩下的解析工作完全取决于服务端的代码逻辑:
比如这些都是合法的写法,只要服务器能识别:
/search/id/123/name/Tom
(RESTful 风格);/query:123-name-Tom
(自定义结构);/api/data?token=xxx@timestamp=yyyy
(非标准符号)
只要服务端能从 URL 中提取出有效信息,就没有问题。
三、Header 和 Body 也可以承载参数
- 除了 GET 的 URL 参数,还可以通过 Header 传参(如
Authorization: Bearer xxx
); - POST、PUT 等请求可在 Body 中传输结构化数据(如 JSON 格式);
- 参数承载位置取决于业务场景、安全性和通信约定。
四、总结
项目 | 是否固定 | 说明 |
---|---|---|
?key=value 格式 | 推荐写法 | 标准兼容性好,解析简单 |
参数格式 | 可自定义 | 自定义符号、路径式、混合都可,只要服务端能识别 |
可用位置 | URL、Header、Body | 根据方法和需求灵活选择 |
结论:GET 参数格式不是固定的,只要服务端与客户端约定好,解析逻辑正确,写法是可以灵活变化的。
😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。