欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 零基础学Axios

零基础学Axios

2025/4/16 14:46:40 来源:https://blog.csdn.net/m0_75165868/article/details/142487332  浏览:    关键词:零基础学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 {@Overridepublic 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.dataif (res.status !== 200) {return Promise.reject(res.message)} return res
}, function (error) {// 对响应错误做点什么return Promise.reject(error)
})

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词