js axios 网络请求参数中的 params 和 data 的区别 图示

前端开发中,我们常用的是axios这个网络请求库来发送我们的网络请求, 在axios中,params和data是有区别的,他们分别应对的是不同的使用场景。

params 发送请求参数

axios会将所有的请求数据附加到请求的url地址中,有请求数据长度的限制。一般用于GET请求。

应用场景: 且请求参数不多,数据流很小的情况下,一般情况和GET配合使用。同时由于请求参数都暴露在了url里面,所以有安全风险,仅适用于非敏感数据的发送

params请求参数示例

如: 我们在params参数中发送一个ids数组类型的请求参数,则最后会生成类似这样的URL请求地址: /api/monitor/loginLog?ids[]=1&ids[]=2&ids[]=3    这里的请求key变成了ids[] , 

api请求代码

// 删除登录日志
export function delLoginLog(id) {
  return request({
    url: '/monitor/loginLog',
    method: 'delete',
    params: {ids: toArr(id)}
  })
}

一般而言,params只和get方法配合使用,你要用其他的请求方式也是可以的,不过在后端获取数据的时候要做相应的调整。 上面的这个示例中最佳的方式应该是是使用data来传递请求参数

data方式发送请求参数

通过data方式传递的请求数据,最后会将所有的请求数据放到请求body里面发送。没有请求数据长度的限制,可发送大文件,字符串或者数据流等,相对于params方式,安全性更高。

适用场景: 适用于所有非GET的请求方式,没有发送数据长度的形式,相对于params方式,请求数据的安全性更好。

api请求示例:

对于数组类型的请求数据,最佳的就是使用data方式发送。

// 删除登录日志
export function delLoginLog(id) {
  return request({
    url: '/monitor/loginLog',
    method: 'delete',
    data: {ids: toArr(id)}
  })
}

最后的请求效果如下:

请求载荷

从上图中,我们可以看到,我们发送的数组类型的请求数据,在请求载荷里面它就是一个数组的形式,他最终是被封装成一个JSON格式发送的。这样我们在后端获取数据的时候,如果是在go语言里面我们就可以非常轻松的使用json.Unmarshal将这个请求数据直接绑定到我们自定义的结构体中。

总结:axios请求参数中的params方式发送请求数据仅适合于参数少,数据量小,而且非私密的请求数据发生情况下使用,而data方式发送的请求数据适合于所有非GET方式的请求场景下使用,且安全性更高。

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: axios请求参数dataparams是两种不同的参数。其data用于POST、PUT、PATCH等需要传输数据体的请求方法,params则用于GET、DELETE等不需要传输数据体的请求方法。data是一个对象,包含需要传输的数据信息,而params则是一个键值对,用于传递URL查询字符串参数。 ### 回答2: axios是一款基于Promise的轻量级HTTP客户端,用于发送HTTP请求,支持现代浏览器和Node.js环境使用。 axios请求参数主要包括dataparams。两者的区别在于传递方式不同。 data用于发送POST请求时携带的数据数据以键值对(key-value)的形式传递,后端可在请求获取数据并进行处理。一般情况下,data可传递参数对象、FormData对象以及Blob对象。其,FormData对象可用于上传文件,Blob对象可用于上传二进制数据params用于发送GET请求时的查询参数数据以键值对(key-value)的形式传递。在发送GET请求时,参数可以作为查询字符串的一部分,如: ``` axios.get('/api/users', { params: { firstName: 'John', lastName: 'Doe', age: 25 } }) ``` 这将向/api/users请求发送一个GET请求,查询参数为?firstName=John&lastName=Doe&age=25。后端可在请求的query获取查询参数并进行处理。 总体来说,dataparams的作用有些类似,都是用于传递数据,但两者的使用场景和传递方式不同。正确的使用方式能够使代码结构更加健壮可靠。 ### 回答3: axios是一个流行的JavaScript库,用于在浏览器和Node.js进行HTTP请求。它提供了两个参数用于发送请求dataparams。这两个参数都是用于请求数据的,但有着不同的用途。 1. data data参数用于在请求添加数据。当我们使用POST、PUT和PATCH方法时,我们需要在请求向服务器发送数据。这些数据可以是一个JavaScript对象、Buffer、FormData、ArrayBuffer等类型的数据。 例如: ``` axios.post('/api/users', { name: 'John', age: 30 }) .then(response => console.log(response.data)) .catch(error => console.log(error)); ``` 在这个例子,我们向服务器发送一个POST请求请求URL为'/api/users',并且我们通过data参数发送了一个包含'name'和'age'键值对的JavaScript对象。服务器可以从请求获取到这些数据。 2. params params参数用于向URL添加查询参数。当我们使用GET请求时,我们需要在URL添加查询参数发送数据给服务器。这些参数是包含键值对的对象,键是查询参数名,值是查询参数值。 例如: ``` axios.get('/api/users', { params: { name: 'John', age: 30 } }) .then(response => console.log(response.data)) .catch(error => console.log(error)); ``` 在这个例子,我们向服务器发送一个GET请求请求URL为'/api/users',并且我们通过params参数发送了一个包含'name'和'age'键值对的JavaScript对象。这将把查询参数添加到URL,最终URL将是'/api/users?name=John&age=30'。服务器可以从查询参数获取数据。 总结一下,axios的'data'参数用于POST、PUT和PATCH请求,用于向请求添加数据,而'params'参数用于GET请求,用于向URL添加查询参数。正确使用这两个参数可以帮助我们更好地与服务器进行通信,并获取我们所需的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值