接口请求:
安装:npm install axios --save
main.js配置
import axios from ‘axios‘; import qs from ‘qs‘; Vue.prototype.$axios=axios; Vue.prototype.qs=qs; axios.defaults.baseURL=‘http://localhost:8000/‘
axios再.vue中使用:
第一种:
第一种get请求,带参数:{params: { ‘key‘: ‘value‘ }},
export default { beforeCreate() { this.form = this.$form.createForm(this, { name: ‘normal_login‘ }); }, methods: { // submit method handleSubmit(e) { e.preventDefault(); this.form.validateFields((err, values) => { if (!err) { console.log(‘Received values of form: ‘, values); this.$axios.get( ‘/demo-service/api/v1/author/‘ {params: { ‘key‘: ‘value‘ }} ).then(res => {console.log(res);} ) .catch( error=> {console.log(error);} ) } }); }, },
post请求:
默认axios是application/json,所以
export default { beforeCreate() { this.form = this.$form.createForm(this, { name: ‘normal_login‘ }); }, methods: { // submit method handleSubmit(e) { e.preventDefault(); this.form.validateFields((err, values) => { if (!err) { let data={ name:values.userName, price:values.password, publish:1 }; console.log("xxxxxxxxxx",data); this.$axios.post( ‘/demo-service/api/v1/book/‘, data, ).then(res => {console.log(res);} ) .catch( error=> {console.log(error);} ) } }); }, },
2.application/x-www-form-urlencoded,由于使用了qs.stringify(data),会自动按表单请求
export default { beforeCreate() { this.form = this.$form.createForm(this, { name: ‘normal_login‘ }); }, methods: { // submit method handleSubmit(e) { e.preventDefault(); this.form.validateFields((err, values) => { if (!err) { let data={ name:values.userName, price:values.password, publish:1 }; console.log("xxxxxxxxxx",data); this.$axios.post( ‘/demo-service/api/v1/book/‘, this.qs.stringify(data) ).then(res => {console.log(res);} ) .catch( error=> {console.log(error);} ) } }); }, },
3.muti-form-data:
export default { beforeCreate() { this.form = this.$form.createForm(this, { name: ‘normal_login‘ }); }, methods: { // submit method handleSubmit(e) { e.preventDefault(); this.form.validateFields((err, values) => { if (!err) { let data={ name:values.userName, price:values.password, publish:1 }; let data2=new FormData(); data2.append(‘code‘,‘1234‘); data2.append(‘name‘,‘yyyy‘); console.log("xxxxxxxxxx",data); this.$axios.post( ‘/demo-service/api/v1/book/‘, data2 // this.qs.stringify(data) ).then(res => {console.log(res);} ) .catch( error=> {console.log(error);} ) } }); }, }, };
结语:
axios通用写法:this.$axios(
{
url: ‘/demo-service/api/v1/book/‘,
method: ‘post‘,
data: data,
headers:{‘Content-Type‘: ‘application/json;charset=UTF-8‘},
transformRequest: function (data) {
// 对 data 进行任意转换处理
return JSON.stringify(data);
}
}
)
export default { beforeCreate() { this.form = this.$form.createForm(this, { name: ‘normal_login‘ }); }, methods: { // submit method handleSubmit(e) { e.preventDefault(); this.form.validateFields((err, values) => { if (!err) { let data={ name:values.userName, price:values.password, publish:1 }; let data2=new FormData(); data2.append(‘code‘,‘1234‘); data2.append(‘name‘,‘yyyy‘); console.log("xxxxxxxxxx",data); this.$axios( { url: ‘/demo-service/api/v1/book/‘, method: ‘post‘, data: data, headers:{‘Content-Type‘: ‘application/json;charset=UTF-8‘} } // this.qs.stringify(data) ).then(res => {console.log(res);} ) .catch( error=> {console.log(error);} ) } }); }, },