当前位置: 首页 > article >正文

零基础学Axios

Axios官网:Axios官网 

想用Axios前需要在项目中安装axios,安装方式如下:

下列是axios请去方式,本文主要讲解post和get请求,其他请求和这两种请求方法相同。

1 get请求

1.1 不带请求参数

前端

后端

 

1.2 带请求参数 

前端

写法一(推荐)

写法二:

但是这种写法在遇到特殊字符,需要进行处理。不处理的后果如下。(后端接收不到参数)

处理方式

后端 

2 post请求 

2.1 不带请求参数

前端

后端 

2.2 带请求参数 

方式一

参数放在请求头,不是很推荐

前端

 后端

方式二 

参数放在请求体

(post请求第二个就是请求体)

前端

后端

后端需要进行处理,不然接收不到请求参数

 处理方式(后端处理)

        写法一:

        写法二:将接收参数直接封装一个对象

 方式三

这种方式和方式二都是将参数放在请求体,但是方式二是后端来进行处理方式三是前端进行处理,后端不用做处理。

前端

    写法一

   写法二

后端

 方式四

前端

后端

     写法一

   写法二

3 配置项

在项目中,可能每个请求都要设置请求头或一些其他设置,若在每个请求中都来进行设置,那将十分繁琐。我们可利用下面的配置来进行统一处理。

import axios from 'axios'

// 创建一个新的axios实例
const request = axios.create({
  baseURL: 'http://smart-shop.itheima.net/index.php?s=/api',
  timeout: 5000
})

 

 一般我们会将配置项,单独抽离到一个文件中,需要用到配置项的文件自行导入

使用 

 

 3.1 withCredentials 使用场景

在跨域情况下,后端传给前端的JSESSIONID通常不会自动保存。

这是因为浏览器的同源策略限制。当进行跨域请求时,浏览器会对跨域的 Cookie 进行严格的限制。默认情况下,浏览器不会自动将跨域响应中的JSESSIONID保存到本地的 Cookie 中。如果需要

在跨域情况下传递和保存JSESSIONID,可以采取以下方法:

后端:在后端的响应中添加特定的 CORS 响应头,允许跨域请求携带 Cookie。例如,在 Java Spring Boot 中,可以通过配置WebMvcConfigurer来实现:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
               .allowedOrigins("http://your-frontend-url.com")
               .allowedMethods("GET", "POST", "PUT", "DELETE")
               .allowCredentials(true);
    }
}

或在注解上加上allowCredentials

前端 :前端是需要配合处理的

在前端的请求中,确保设置了withCredentialstrue,以告知浏览器在跨域请求中包含凭证。例如在 Axios 中:

在不跨域的情况下,浏览器通常会自动保存服务器返回的 JSESSIONID。 

4 响应数据 

后端返回给前端的数据都在data下面。

5 拦截器 

5.1 请求拦截器

可以在这么统一加上请求头token什么的。

// 添加请求拦截器
request.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么,
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

5.2 响应拦截器

// 添加响应拦截器
request.interceptors.response.use(
function (response) {
  // 对响应数据做点什么
  const res = response.data
  if (res.status !== 200) {
    return Promise.reject(res.message)
  } 
  return res
}, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error)
})


http://www.kler.cn/a/318959.html

相关文章:

  • 批量重命名Excel文件并排序
  • SQL 中 BETWEEN AND 用于字符串的理解
  • 软件测试面试大全(含答案+文档)
  • OceanStor Pacific系列 8.1.0 功能架构
  • Vector 深度复制记录
  • NAT网络工作原理和NAT类型
  • 每天学习一个技术栈 ——【Celery】篇(1)
  • C++20-协程
  • 短视频矩阵管理系统贴牌 源码开发
  • 数据库某字段要保存中文时,怎样确定长度(以Oracle为例)
  • 神经网络(四):UNet语义分割网络
  • 走向管理岗,必须懂这13个人才管理铁律
  • 详解机器学习经典模型(原理及应用)——岭回归
  • 一场大模型面试,三个小时,被撞飞了
  • MODELS 2024震撼续章:科技与可持续性的未来交响曲
  • MES系统如何提升制造企业的运营效率和灵活性
  • [6]Opengl ES预览摄像头
  • 徐州网站建设的最新趋势与技术
  • 无人机之编程基础原理
  • 接口测试Postman关联,断言,前置,参数化用法
  • 《AI设计类工具系列之三——Magic Design》
  • 程序设计中,day 与 date 这2个单词的区别
  • Unity的Text组件中实现输入内容的渐变色效果
  • Scanner流程控制语句
  • 【kafka-03】springboot整合kafka以及核心参数详解
  • 代码随想录Day17 图论-2