axios如何封装请求以及content-type的配置
content-type的三种常见数据格式
- 1、application/x-www-form-urlencoded(表单方式)
- 2、application/json(JSON方式)
- 3、multipart/form-data(文件方式)
axios默认用的是application/json
格式:
{
name:xxx,
age:xxx
}
而multipart/form-data和application/x-www-form-urlencoded格式是
name=xxx&age=xxx,
因此需要序列化,可以使用axios自带的qs去序列化data
import axios from 'axios'
import qs from 'qs'
axios.post(url, data)
axios.post(url, data, {headers: {'Content-Type': 'application/json'}})
export function getHome(data) {
return request({
url: '/login',
method:'post',
data
})
}
export function getHome(data) {
return request({
url: '/login',
method:'post',
headers: {'Content-Type': 'application/json'},
data
})
}
axios.post(url, qs.stringify(data), {headers: {'Content-Type': 'application/x-www-form-urlencoded'}})
export function getAbout(data) {
return request({
url: '/login',
method:'post',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
data:qs.stringify(data)
})
}
export function getData(data) {
return request({
url: '/login',
method:'post',
headers: {'Content-Type': 'multipart/form-data'},
data:qs.stringify(data)
})
}
let params = new FormData()
params.append('file', this.file)
params.append('qq', this.qq)
params.append('weChat', this.WeChat)
axios.post(URL, params, {headers: {'Content-Type': 'multipart/form-data'}}).then(
res => {
if (res.data.code === 200) {
this.dataList = res.data.rows
}).catch(
() => {
this.$notify.error(res.data.message)
})
封装请求
import axios from 'axios'
export function request(config) {
const instance = axios.create({
baseURL: "http://127.0.0.1:3000",
timeout: 3000
})
instance.interceptors.request.use(config => {
config.headers['token'] = store.getters.token
return config
}, error => {
console.log(error);
return Promise.reject(error)
})
instance.interceptors.response.use(res => {
if (res.data.code === 200) {
return res
}
}, error => {
console.log(error);
return Promise.reject(error)
})
return instance(config)
}
import request from './request'
import qs from 'qs'
export function teacherList(data) {
return http({
url: '/teacher/list',
method: 'post',
data
})
}
export function getDeptList() {
return http({
url: '/index/getDeptList',
method: 'post'
})
}
export function getHome (data) {
return request({
url: '/index/home',
method:'post',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
data:qs.stringify(data)
})
}