Axios

Axios

轻松启动

在学习axios之前,我们先安装axios的依赖(再一次体现vue是渐进式框架的特点)

1
npm install axios

从axios框架中导入axios

1
import axios from "axios";

注:axios使用的是默认暴露,导入时不需要加大括号


使用Axios设置请求的参数(请求三要素)

Axios的返回值是一个promise对象

1
2
3
4
5
6
7
8
9
10
11
12
function getLoveMessage() {
let promise = axios({
method: "get",
url: "https://api.uomg.com/api/rand.qinghua?format=json",
params: {
// 如果请求方式是get,使用params中的数据会以键值对形式放入url后
// 如果请求方式是post,使用params中的数据会以键值对形式放入url后
},
data: {
// 如果请求方式是post,使用data中的数据会以JSON形式放入请求体中
}
})

以上的请求方法会在下文简化


使用promise的API去解析响应结果对象

Object.assign(object1, object2) 可以将后一个对象的同名参数赋值给前一个对象的同名参数

1
2
3
4
5
6
7
8
9
promise.then(
function (response) {
Object.assign(message, response.data)
}
).catch(
function (error) {
console.log(error)
}
)

这里可以使用await来接受参数

1
2
let {data} = await promise // 使用解构表达式直接接收对象中所需的参数 从response对象中提取出data对象
Object.assign(message, data)

response 响应结果对象
  • data:服务端响应回来的结果对象
    • 如果data是以JSON串的形式,会自动将其转换为对象
  • status:响应状态码
  • statusText:响应状态描述
  • headers:本次响应的所有响应头
  • config:本次请求的配置信息
  • request:本次请求发送时所使用的XMLHttpRequest对象

Axios本质是使用Ajax的XMLHttpResquest的异步请求


Axios 请求方法

Axios.get()

使用Axios.get方法发送get请求,此方法中可以添加一些参数,返回值为一个promise对象

1
2
3
4
axios.get("url", {
param: {键值对参数,被放在url的?后},
headers: {请求头参数}
})

如果通过get请求指定url不添加任何参数时,可直接使用axios.get(“url”)


Axios.post()

使用Axios.post方法发送post请求,此方法中可以添加一些参数,返回值为一个promise对象

与get()方法不同,在url和其他参数中增加一个大括号,在这个大括号里可以写json串中,被放在请求体中作为post方法的参数

1
2
3
4
5
6
7
8
axios.post(
"url",
{JSON},
{
param: {键值对参数},
headers: {请求头参数}
}
)

与get请求一样,如果不添加任何参数可以直接写成axios.post(“url”)


Axios请求方法简写
1
2
3
let promise = axios.get("https://api.uomg.com/api/rand.qinghua", {
params: {format: "json"}
})

案例改写:每日情话

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
<script setup>

import axios from "axios";

import {reactive} from "vue"

let message = reactive({
code: "",
content: ""
})

async function getLoveMessage() {
// 发送请求
let promise = axios.get("https://api.uomg.com/api/rand.qinghua", {
params: {format: "json"}
})

//接受响应
let {data} = await promise // 使用解构表达式直接接收对象中所需的参数 从response对象中提取出data对象
Object.assign(message, data)
}

</script>

<template>
<div>
<h1>{{ message.content }}</h1>
<button @click="getLoveMessage()">获取每日情话</button>
</div>
</template>

<style scoped>

</style>


Axios
http://blog.170827.xyz/2024/05/10/Axios/
作者
XIAOBAI
发布于
2024年5月10日
许可协议