后端上手学习axios基础知识

前言

axios 可以通过支持发送http请求,可以方便的向后端请求数据,可以实现异步请求,取消请求,拦截器等配置

基础使用

安装axios

通过npm命令或者yarn命令可以安装依赖

csharp 复制代码
npm install axios / yarn add axios

基本用法

可以直接通过axios配置config来构建请求 , 发送get请求/post请求,通过调取get方法实现调用get请求,post方法则为post请求,通过then方法来接受异步请求的结果返回,通过catch来接收请求的错误返回

ini 复制代码
axios(config)

axios({
    method:"",
    headers:{},
    data:{},
    params:{}
}).then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error('请求失败:', error);
  });

第一种:get请求第一个参数配置url地址,第二个参数配置config,可以配置参数params对象也就是get请求问号后的参数,可以配置请求头headers对象

php 复制代码
// axios.get(url,config)

axios.get("http://localhost:3000/get",
{
    params:{name:""},
    headers:{}
})

第二种:当post请求的时候,第一个参数配置url地址,第二个配置data数据内容,第三个参数配置config,可以配置参数params对象也就是get请求问号后的参数,可以配置请求头headers对象

php 复制代码
// axios.post(url,data,config)

axios.post("http://localhost:3000/post",
{
    name:"sss"
},
{
    params:{age:1},
    headers:{}
})

第三种:对于 请求头是content-typemultipart/form-data的时候 , 构造参数有些许不同,需要借助 FormData 对象来实现

go 复制代码
const form = new FormData();
form.append('my_field', 'my value');
form.append('my_buffer', new Blob([1,2,3]));
form.append('my_file', fileInput.files[0]);

axios.post('https://example.com', form)

第四种: 对于请求头content-typeapplication/x-www-form-urlencoded, 需要引用 qs或者 URLSearchParams 来实现 ,但因为 URLSearchParams存在并不一定都支持。

csharp 复制代码
const params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);

const qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 }));

响应和异常

对于then方法后面的response可以获取到的响应结果。

  • data: 获取到请求结果的返回
  • headers : 获取到请求的请求头
  • config: 获取到请求的配置信息
  • status: 获取请求的状态码
vbscript 复制代码
response.data
response.headers

对于catch方法后面的error可以捕获到异常结果。

  • message : 返回的错误信息
  • response: 返回服务器的响应
  • config: 获取到请求的配置信息

创建实例

如果需要为不同的 API 设置不同的基础配置,可以创建 Axios 实例

arduino 复制代码
const instance = axios.create({
  baseURL: 'https://api.example.com', // url地址
  timeout: 5000, // 超时时间
  headers: { 'Authorization': 'Bearer your_token_here' } // 请求头
});

然后可以通过instance在构建不同状态的请求函数方法

php 复制代码
instance(config)

instance({
    method:"",
    headers:{},
    data:{},
    params:{}
})

配置拦截器

注意:如果你需要对具体的实例来进行拦截配置,通过前面的 instance来配置

ini 复制代码
instance.interceptors.request.use(config => {},error => {})

请求拦截器

一般可以用来对请求头,主要是对发送请求前的一些初步的构建参数内容。

ini 复制代码
axios.interceptors.request.use(config => {
  // 在发送请求前添加 token
  config.headers.Authorization = 'Bearer your_token_here';
  return config;
}, error => {
  return Promise.reject(error);
});

响应拦截器

一般可以用来对响应数据进行的判断处理,可以对返回的结果错误结果统一的封装

ini 复制代码
axios.interceptors.response.use(response => {
  // 对响应数据进行处理
  return response;
}, error => {
  // 统一处理错误
  if (error.response.status === 401) {
    console.error('未授权,请重新登录');
  }
  return Promise.reject(error);
});`

项目使用

在我们封装请求来实现时,一般会通过Promise 再包裹一层。 而且一般会创建实例,来封装对应的请求前缀和赋值token等信息,也有对返回的响应做通用结果的处理,就会用到对应的拦截器。

相关推荐
一 乐6 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
码事漫谈7 小时前
Protocol Buffers 编码原理深度解析
后端
码事漫谈7 小时前
gRPC源码剖析:高性能RPC的实现原理与工程实践
后端
踏浪无痕9 小时前
AI 时代架构师如何有效成长?
人工智能·后端·架构
程序员小假9 小时前
我们来说一下无锁队列 Disruptor 的原理
java·后端
武子康11 小时前
大数据-209 深度理解逻辑回归(Logistic Regression)与梯度下降优化算法
大数据·后端·机器学习
maozexijr11 小时前
Rabbit MQ中@Exchange(durable = “true“) 和 @Queue(durable = “true“) 有什么区别
开发语言·后端·ruby
源码获取_wx:Fegn089511 小时前
基于 vue智慧养老院系统
开发语言·前端·javascript·vue.js·spring boot·后端·课程设计
独断万古他化11 小时前
【Spring 核心: IoC&DI】从原理到注解使用、注入方式全攻略
java·后端·spring·java-ee
毕设源码_郑学姐11 小时前
计算机毕业设计springboot基于HTML5的酒店预订管理系统 基于Spring Boot框架的HTML5酒店预订管理平台设计与实现 HTML5与Spring Boot技术驱动的酒店预订管理系统开
spring boot·后端·课程设计