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类型的参数,此时需要做两点
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中的表现如下
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)
})
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)
注意:axios不能通过get请求发送 json 数据,使用postman可以做到通过get请求发送json数据。
但是通过 axios 框架就不行, 主要是因为axios是对ajax的一个封装。他本身不支持get请求在body体传参。
原生和jquery的ajax是支持的。
建议跟后端沟通,你把json拼在url后面,后端从url的queryString取值。或者使用post请求来传json数据
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所在的位置也是不一样的