https://www.kancloud.cn/yunye/axios/234845
axios request API
1 2 3 4 5 6 7 8 9 10 11 12
| axios(config); axios(url[, config])
axios.request(config)
axios.get(url[, config]) axios.delete(url[, config]) axios.head(url[, config]) axios.post(url[, data[, config]]) axios.put(url[, data[, config]]) axios.patch(url[, data[, config]])
|
综上,post
put
patch
三个方法默认第二参数为 data
,即参数作为请求体request body
传输。
当然如果需要以 url 形式传输data
,需要把参数放在 config
的 params
选项中。
其余三个请求 get
delete
head
第二个参数即为 config
几个示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| axios({ method: 'post', url: '/user/12345', data: { firstName: 'Fred', lastName: 'Flintstone' } });
axios.get('/user?ID=12345') .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });
axios.get('/user', { params: { ID: 12345 } }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });
axios.post('/user', { firstName: 'Fred', lastName: 'Flintstone' }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });
|
config 内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| { url: '/user',
method: 'get',
baseURL: 'https://some-domain.com/api/',
transformRequest: [function (data) {
return data; }],
transformResponse: [function (data) {
return data; }],
headers: {'X-Requested-With': 'XMLHttpRequest'},
params: { ID: 12345 },
paramsSerializer: function(params) { return Qs.stringify(params, {arrayFormat: 'brackets'}) },
data: { firstName: 'Fred' },
timeout: 1000, }
|
很长,贴了一点常用的,最常用还是 url
method
data
params
.
baseURL
proxy
这种有时候会在封装的时候,在发出请求时统一配置。
axios response body
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| { data: {},
status: 200,
statusText: 'OK',
headers: {},
config: {} }
|
以上
配置 axios
全局的默认值
1 2 3
| axios.defaults.baseURL = 'https://api.example.com'; axios.defaults.headers.common['Authorization'] = AUTH_TOKEN; axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
|
自定义示例的默认值 然后可以导出
1 2 3 4 5 6 7
| var instance = axios.create({ baseURL: 'https://api.example.com' });
instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;
|
配置优先级:临时 覆盖 实例 覆盖 全局
拦截器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| axios.interceptors.request.use(function (config) { return config; }, function (error) { return Promise.reject(error); });
axios.interceptors.response.use(function (response) { return response; }, function (error) { return Promise.reject(error); });
|
注意:返回值是一个封装的 Promise
对象
这里可以做一点报错弹窗之类的