Axios の使い方

Axios は XMLHttpRequest を Promise ベースで使えるようにしたライブラリ。Promise の polyfill を使えば IE 11 から動作する。

公式の README よりよく使う部分を抜粋。

GET リクエストの基本

基本形は次の通り。HEAD, OPTIONS, DELETE メソッドの場合も同様の引数をとる。

const response = await axios.get(url[, config])

GET パラメータは URL に含めるかわりに次のように指定することができる。

// axios.get('/user?id=12345') と等価
axios.get('/user', {
	params: { id: '12345' }
})

POST リクエストの基本

基本形は次の通り。PUT, PATCH メソッドの場合も同様の引数をとる。

const response = await axios.post(url[, data[, config]])

リクエストボディにプレーンなオブジェクトを渡すと application/json 形式で送信される(リクエストヘッダも出力される)。

const user = {
	id: '12345',
	name: 'John'
}
axios.post('/user/update', user) // => {"id":"12345","name":"John"}

データを application/x-www-form-urlencoded 形式で送信したい場合は URLSearchParams クラスのインスタンスを渡す。

const params = new URLSearchParams()
Object.keys(user).forEach((key) => {
	params.append(key, user[key])
})
axios.post('/user/update', params) // => id=12345&name=John

レスポンス

レスポンスボディは data プロパティに格納されている。

try {
	const response = await axios.get('/user?id=12345')
	console.log(response.data) // => { user: { id: 12345, name: 'John' } }
} catch (error) {
	console.error(error)
}

オプション

リクエストヘッダを指定する

axios.get('/checkout/list', {
	headers: { Authorization: `token ${token}` }
})