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

问题描述:

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

期待回答的内容是什么?

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

我的推测:

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


回答:

不清楚你说的 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 请求参数长度最大值的一个理解误区 - 简书

以上是 在Vue2项目中,什么情况需要使用params参数? 的全部内容, 来源链接: utcz.com/p/932947.html

回到顶部