基于Axios完成前后端分离项目数据交互

一、安装Axios

npm i axios -S

封装一个请求工具:request.js

javascript 复制代码
import axios from 'axios'

// 创建可一个新的axios对象
const request = axios.create({
    baseURL: 'http://localhost:9090',   // 后端的接口地址  ip:port
    timeout: 30000
})

// request 拦截器
// 可以自请求发送前对请求做一些处理
// 比如统一加token,对请求参数统一加密
request.interceptors.request.use(config => {
    config.headers['Content-Type'] = 'application/json;charset=utf-8';
    // let user = localStorage.getItem("user") ? JSON.parse(localStorage.getItem("user")) : null
    // config.headers['token'] = 'token'  // 设置请求头

    return config
}, error => {
    console.error('request error: ' + error) // for debug
    return Promise.reject(error)
});

// response 拦截器
// 可以在接口响应后统一处理结果
request.interceptors.response.use(
    response => {
        let res = response.data;

        // 兼容服务端返回的字符串数据
        if (typeof res === 'string') {
            res = res ? JSON.parse(res) : res
        }
        return res;
    },
    error => {
        console.error('response error: ' + error) // for debug
        return Promise.reject(error)
    }
)


export default request

二、在main.js文件中,引入

javascript 复制代码
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import request from "@/utils/request";
Vue.config.productionTip = false
Vue.use(ElementUI, { size: 'small' });

Vue.prototype.$request=request

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

在vue 的 methods 中使用 :

或者直接在vue 中引用使用:

三、后端代码解决跨域问题

但是现在就运行程序则会报错

方法一:增加一个 CorsConfig 类

java 复制代码
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {

    // 当前跨域请求最大有效时长。这里默认1天
    private static final long MAX_AGE = 24 * 60 * 60;

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 1 设置访问源地址
        corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头
        corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法
        corsConfiguration.setMaxAge(MAX_AGE);
        source.registerCorsConfiguration("/**", corsConfiguration); // 4 对接口配置跨域设置
        return new CorsFilter(source);
    }
}

方法二:在controller层上加上@CrossOrigin 注解

两个方法任选其中一个就行。现在将前后端启动就可以进行数据交互了。

相关推荐
自不量力的A同学几秒前
Electron 40.0.0 发布,跨平台桌面应用开发工具
前端·javascript·electron
Charlie_lll13 分钟前
学习Three.js–材质(Material)
前端·three.js
Kratzdisteln18 分钟前
【1902】预先生成完整的树状PPT结构
java·前端·powerpoint
Java程序员威哥34 分钟前
Java应用容器化最佳实践:Docker镜像构建+K8s滚动更新(生产级完整模板+避坑指南)
java·开发语言·后端·python·docker·kubernetes·c#
深耕AI39 分钟前
【wordpress系列教程】05 文章分类与标签
前端
Klong.k41 分钟前
Mybatis-plus中Save()方法的注意点
mybatis
J_liaty1 小时前
RocketMQ快速入门与Spring Boot整合实践
spring boot·rocketmq·java-rocketmq
源代码•宸1 小时前
Golang原理剖析(defer、defer面试与分析)
开发语言·经验分享·后端·面试·golang·defer·开放编码
南山乐只1 小时前
Java并发原生工具:原子类 (Atomic Classes)
java·开发语言·后端
michael_ouyang1 小时前
WebSocket 鉴权方案选型与 Electron 应用的最佳实践
前端·websocket·网络协议·electron