← 全部文章

技术与生活 / 一篇记录

查询字符串里,一个参数可以出现两次

查询字符串不是简单的键值拼接,重复参数和转义字符都应明确处理。

URLSearchParams 能保留参数结构,get 与 getAll 则表达不同的读取口径。需要多选条件的接口,应提前约定重复参数与单值参数的处理方式。

从一个例子看起

以下示例可在现代浏览器的开发者工具中观察;涉及 DOM 的代码需要在网页环境运行。

const q = new URLSearchParams({ q: 'hello world' }); console.log(q.toString());

再用 get 和 getAll 比较单值与重复参数。

排查时再往前走一步

准备空值、空格、中文和重复键,比较序列化再解析后的结果。参数顺序一般不应承载业务含义,签名等特殊协议则需要更严格的规范。

set 会替换同名参数,而 append 会增加一个条目。构造多选筛选条件时,两者差异会直接影响服务端收到的数据,示例验证中应同时覆盖新增与覆盖两种操作。

URL 参数会出现在日志或分享链接中,不应放入密码。

参考:JavaScript 文档。

搜索文章

输入关键词,找回一篇记录。