在Vue2项目中,什么情况需要使用params参数?

作者站长头像
站长
· 阅读数 17

问题描述:

这个问题我用中英文都搜了一遍,并没有得到满意的答案query参数似乎是万能的?那么为什么还要增加一个params参数?

期待回答的内容是什么?

Vue2项目中使用params参数和query的情景

我的推测:

在接口带参数时必须使用params,其他情况下使用params或query都可以

回复
1个回答
avatar
test
2024-07-20

不清楚你说的 paramsquery 指的是 接口传参 还是 路由带参

如果是接口传参的话。一是为了区分请求,一般来说 getpostputdelete 请求各有各的含义。getdelete 请求多半会使用 query 传参,postput 使用 params 传参比较多。另外一个就是 query 传参会受到长度和类型限制。比如会遇到 414 Request-URI Too Large 这样的异常抛出,或者接收时因为URL过长导致参数缺失。同时也没办法传递文件类型的参数(比如说文件上传功能)而使用 params 传递参数的话,就不会收到这样的类型限制。以及对于参数的长度限制也会宽容的多,理论上是无限制的,但是一般默认为2M,相对于 query2k~8k 也大太多太多了。

如果是路由带参的话,一般来说 params 是为了实现类似 RESTful 的URL形式。比如说思否问题链接的 /q/1010000042548488/editq 表示 question,后面的数字 1010000042548488 标识问题ID,edit 表示编辑功能。传递的参数也可以设置为不显示,比如说传递 token 这种敏感信息(但是刷新后会丢失参数。所以 vue-router@4x 增加 params 传参的校验,不是具名的 params 参数使用将会抛出异常)。而 query 的话就是属于比较传统了,比如说 /question?id=1010000042548488 以及 /question/edit?id=1010000042548488 这样的形式。刷新后参数也不会丢失,只是如果你传递的参数比较多,你的URL就会比较混乱。例如:/post?type=exp&page=1&pageSize=20&token=f9bf78b9a18ce6d46a0cd2b0b86df9da。而使用 params 传递则会规则很多,例如 /post/exp/1。同样使用query传递参数长度也会有所限制。 params 传递参数的话,因为可以不附加在URL上面,所以就没有长度限制了。

相关阅读

关于 HTTP GET/POST 请求参数长度最大值的一个理解误区 - 简书

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容