axios

概念

axios 有一点好,可以在浏览器和node环境中使用。

在浏览器中使用 ajax,在node中使用 http 发送请求。支持promise,可拦截可取消

快速入门

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const axios = require('axios')
// url get
axios.get('/user?v=2').then(res=>{}).catche().finally()
// get 带参数
axios.get('/user',{params:{ID:1}}).then().catch().then()
// async/await
async go(){
try{
const res = await axios.get('/user?v=2')
}catch(err){log(err)}
}

// post
axios.post('/user',{
a:2,b:1
}).then().catch()

// 执行多个请求
function a1(){return axios.get()}
function a2(){return axios.get}
axios.all([a1(),a2()]).then(axios.spread((acct,perms)=>{}))

api

axios(config)

1
2
3
4
5
6
7
axios({
method:'post',
url:'',
data:{
a:1
}
})

使用 stream 下载图片

1
2
3
4
5
6
7
axios({
method:'get',
url:'',
responseType:'stream'
}).then(res=>{
res.data.pipe(fs.createWriteStream(a.jpg))
})

axios(url[,config])

默认get

1
axios(url)

其他

  • axios.request(config)
  • axios.get(url[,config])
  • axios.delete(url[,config])
  • axios.head

创建一个实例

1
2
3
4
5
6
const i = axios.crate({
baseURL:'',
timeout:1000,
headers:{}
})
i.get()

返回的结构

1
2
3
4
5
6
7
8
var res = {
data:{},
status:200,
statusText:'OK',
headers:{},
config:{}
request:{}
}

默认情况下,axios把 Javascropt 转为json,如果要使用application/x-www-form-urlencoded发送数据。

浏览器可以使用 qs库来编码

node里可以使用 querystring

请我喝杯咖啡吧~