关于axios的get、post请求参数的记录

axios请求默认的content-type是application/json,也就是java后端经常让你把参数放在body中的那种格式 传输的样式是 requestbody

请求的格式如下图
在这里插入图片描述

post请求

1、发送json参数,使用axios默认的类型即可,不需要额外的设置

let params: {
  table_name:"person",fields:[{field_name:"name",field_value:"张三"}]
}
axios.post('http://XX.XXX.XXX.XX:8800/demo/db', params).then(res => {
  console.log('res', res)
})

请求成功后在network中的表现和上图一样

2、发送form-data类型的参数,有两种方式
(1)此时需要做两点

  • 修改请求头的content-type
  • 使用qs对参数进行序列化
let params = {
	dataKey: key,
	filename: 测试
}
axios.post('http://XX.XXX.XXX.XX:8800/demo/dbsql', qs.stringify(params), {
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
}).then(res => {
  console.log('res', res)
})

请求成功后在network中的表现如下
在这里插入图片描述
(1)如下设置Content-Type,并使用formData来传参

axios.post(url, params, {
      headers: {
        'Content-Type': 'multipart/form-data' // 设置post文件的请求头
      }
    })
      .then(res => {
        resolve(res.data)
      })
      .catch(err => {
        reject(err)
      })
// 参数如下
const formData = new FormData();
formData.append("files", param.file);
formData.append("datasettype", state.addForm.type);
uploadDataset(formData).then(res => {
  console.log('rrrrrr', res)
})

3、需要参数拼接到url后边

// 如果参数比较少,可以直接拼接到url后
axios.post(`http://XX.XXX.XXX.XX:8800/demo/dbsql?dataKey=${dataKey}&filename=${filename}`)
// 如果参数比较多,可以如下写
axios.post('http://XX.XXX.XXX.XX:8800/demo/dbsql', null, {
   params:{
     dataKey: 'key',
     filename: '测试',
     sql_str: 'select * from person'
     ...
   }
 }).then(res => {
   console.log('res', res)
 })

请求成功后如下图
![在这里插入图片描述](https://img-blog.csdnimg.cn/9979ad2f247a481a909b9139a3fa8cb7.png
payload中如下
在这里插入图片描述

4、需要同时传两种参数,既要拼接,又要json时,如下

let params = {
	 dataKey: 'key',
     filename: '测试',
     sql_str: 'select * from person'
}
axios.post('http://XX.XXX.XXX.XX:8800/demo/dbsql', params, {
   params:{
     id: 1
   }
 }).then(res => {
   console.log('res', res)
 })
 // 或者直接将需要拼接的参数写在url后边
 axios.post(`http://XX.XXX.XXX.XX:8800/demo/dbsql?id=${id}`, params)

在这里插入图片描述

get请求

注意:axios不能通过get请求发送 json 数据,使用postman可以做到通过get请求发送json数据。
但是通过 axios 框架就不行, 主要是因为axios是对ajax的一个封装。他本身不支持get请求在body体传参。
原生和jquery的ajax是支持的。
建议跟后端沟通,你把json拼在url后面,后端从url的queryString取值。或者使用post请求来传json数据

get请求会默认的把参数拼接到url后边
let params = {
	 dataKey: 'key',
     filename: '测试',
     sql_str: 'select * from person'
}
axios.get('http://XX.XXX.XXX.XX:8800/demo/dbsql', {
  params: params,
  headers: { }// 注意get方法和post方法设置headers时是不一样的
}).then(res => {
  console.log('res', res)
})
// 注意,get方法和post方法的第二个参数的形式是不一样的,headers所在的位置也是不一样的

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值