axios用post请求的数据格式

vue框架推荐使用axios来发送ajax请求,使用vue就难免要使用axios。发送异步请求一般使用GIT和POST方法,用GIT方法请求参数则会拼接在url上,而POST方法由于安全性问题不会出现在url上。POST请求也有注意项,POST方法存在不同的数据编码格式。话不多说,直接上菜。

post提交数据的四种编码方式

1.application/x-www-form-urlencoded

这应该是最常见的post编码方式,一般的表单提交默认以此方式提交。大部分服务器语言对这种方式都有很好的支持。在PHP中,可以用$_POST[“key”]的方式获取到key的值,在node中我们可以使用querystring中间件对参数进行分离。大部分服务端语言都对这种方式有很好的支持。

import axios from "axios";
import qs from 'Qs';

let data = {"name":"value"} 
data = qs.stringify(data) 
axios.post(url,data).then(res => {
console.log(res);
})

 2.application/json

axios默认提交就是使用这种格式。如果使用这种编码方式,那么传递到后台的将是序列化后的json字符串。现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify,服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。

import axios from "axios";

let data = {"name":"value"} 
axios.post(url,data).then(res => {
console.log(res);
})

3.multipart/form-data

这也是一种比较常见的post数据格式,我们用表单上传文件时,必须使form表单的enctype属性或者ajax的contentType参数等于multipart/form-data。这种方式一般用来上传文件,各大服务端语言对它也有着良好的支持。

import axios from 'axios'

let data = new FormData();
data.append('name1','value1');
data.append('name2','value2');
axios.post(url,data)
.then(res=>{
    console.log(res);            
})

4.text/xml

text/xml 这种编码方式一般人很少用到,而我们就是一般的人,所以一般不要太在意。(本人也没有用过,微笑微笑)
在网上了解就是大概应该以xml文件格式传参,这样的请求又称 XML-RPC 请求。尽量不要用着这种编码方式,个人觉得这种方式已经过时了。


POST请求的data编码格式,应该和后端一起商量在决定content-type,以免不必要的麻烦。

描述如有错误,欢迎指正!

猜你喜欢

转载自blog.csdn.net/m0_70015558/article/details/128248943