当前位置:   article > 正文

Vue Springboot前后端交互_springboot和vue怎么交互

springboot和vue怎么交互

一、Axios的使用

1、简介

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

2、请求配置
这些是创建请求时可以用的配置选项。只有 url 是必需的。如果没有指定 method,请求将默认使用 get 方法。

  1. {
  2. // `url` 是用于请求的服务器 URL
  3. url: '/user',
  4. // `method` 是创建请求时使用的方法
  5. method: 'get', // default
  6. // `baseURL` 将自动加在 `url` 前面,除非 `url` 是一个绝对 URL。
  7. // 它可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URL
  8. baseURL: 'https://some-domain.com/api/',
  9. // `headers` 是即将被发送的自定义请求头
  10. headers: {'X-Requested-With': 'XMLHttpRequest'},
  11. // `params` 是即将与请求一起发送的 URL 参数
  12. // 必须是一个无格式对象(plain object)或 URLSearchParams 对象
  13. params: {
  14. ID: 12345
  15. },
  16. // `data` 是作为请求主体被发送的数据
  17. // 只适用于这些请求方法 'PUT', 'POST', 和 'PATCH'
  18. // 在没有设置 `transformRequest` 时,必须是以下类型之一:
  19. // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams
  20. // - 浏览器专属:FormData, File, Blob
  21. // - Node 专属: Stream
  22. data: {
  23. firstName: 'Fred'
  24. },
  25. // `responseType` 表示服务器响应的数据类型,可以是 'arraybuffer', 'blob', 'document', 'json', 'text', 'stream'
  26. responseType: 'json', // default
  27. // `transformRequest` 允许在向服务器发送前,修改请求数据
  28. // 只能用在 'PUT', 'POST''PATCH' 这几个请求方法
  29. // 后面数组中的函数必须返回一个字符串,或 ArrayBuffer,或 Stream
  30. transformRequest: [function (data, headers) {
  31. //data 进行任意转换处理
  32. return data;
  33. }],
  34. // `transformResponse` 在传递给 then/catch 前,允许修改响应数据
  35. transformResponse: [function (data) {
  36. //data 进行任意转换处理
  37. return data;
  38. }],
  39. ......
  40. }

3、响应结构
某个请求的响应包含以下信息

  1. {
  2. // `data` 由服务器提供的响应
  3. data: {},
  4. // `status` 来自服务器响应的 HTTP 状态码
  5. status: 200,
  6. // `statusText` 来自服务器响应的 HTTP 状态信息
  7. statusText: 'OK',
  8. // `headers` 服务器响应的头
  9. headers: {},
  10. // `config` 是为请求提供的配置信息
  11. config: {},
  12. // 'request'
  13. // `request` is the request that generated this response
  14. // It is the last ClientRequest instance in node.js (in redirects)
  15. // and an XMLHttpRequest instance the browser
  16. request: {}
  17. }

使用 then 时,你将接收下面这样的响应 :

  1. axios.get('/user/12345')
  2. .then(function(response) {
  3. console.log(response.data);
  4. console.log(response.status);
  5. console.log(response.statusText);
  6. console.log(response.headers);
  7. console.log(response.config);
  8. });

4.安装

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

二、后端的代码实现(整合Springboot)

1.pom文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.5.0</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.example</groupId>
  12. <artifactId>usersystem</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>usersystem</name>
  15. <description>Demo project for Spring Boot</description>
  16. <properties>
  17. <java.version>1.8</java.version>
  18. </properties>
  19. <dependencies>
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-web</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.mybatis.spring.boot</groupId>
  26. <artifactId>mybatis-spring-boot-starter</artifactId>
  27. <version>2.2.2</version>
  28. </dependency>
  29. <dependency>
  30. <groupId>mysql</groupId>
  31. <artifactId>mysql-connector-java</artifactId>
  32. <scope>runtime</scope>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.projectlombok</groupId>
  36. <artifactId>lombok</artifactId>
  37. <optional>true</optional>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.springframework.boot</groupId>
  41. <artifactId>spring-boot-starter-mail</artifactId>
  42. </dependency>
  43. <dependency>
  44. <groupId>org.springframework.boot</groupId>
  45. <artifactId>spring-boot-starter-test</artifactId>
  46. <scope>test</scope>
  47. </dependency>
  48. <dependency>
  49. <groupId>org.springframework.boot</groupId>
  50. <artifactId>spring-boot</artifactId>
  51. <version>2.5.0</version>
  52. </dependency>
  53. <dependency>
  54. <groupId>org.aspectj</groupId>
  55. <artifactId>aspectjweaver</artifactId>
  56. <version>1.8.13</version>
  57. </dependency>
  58. <dependency>
  59. <groupId>com.baomidou</groupId>
  60. <artifactId>mybatis-plus-boot-starter</artifactId>
  61. <version>3.5.1</version>
  62. </dependency>
  63. <!--swagger-->
  64. <dependency>
  65. <groupId>io.springfox</groupId>
  66. <artifactId>springfox-boot-starter</artifactId>
  67. <version>3.0.0</version>
  68. </dependency>
  69. <!-- 代码生成器-->
  70. <dependency>
  71. <groupId>com.baomidou</groupId>
  72. <artifactId>mybatis-plus-generator</artifactId>
  73. <version>3.5.1</version>
  74. </dependency>
  75. <!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity -->
  76. <dependency>
  77. <groupId>org.apache.velocity</groupId>
  78. <artifactId>velocity</artifactId>
  79. <version>1.7</version>
  80. </dependency>
  81. <!-- hutool-->
  82. <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
  83. <dependency>
  84. <groupId>cn.hutool</groupId>
  85. <artifactId>hutool-all</artifactId>
  86. <version>5.7.20</version>
  87. </dependency>
  88. <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
  89. <dependency>
  90. <groupId>org.apache.poi</groupId>
  91. <artifactId>poi-ooxml</artifactId>
  92. <version>4.1.2</version>
  93. </dependency>
  94. <!---jwt-->
  95. <dependency>
  96. <groupId>com.auth0</groupId>
  97. <artifactId>java-jwt</artifactId>
  98. <version>3.10.3</version>
  99. </dependency>
  100. </dependencies>
  101. <build>
  102. <plugins>
  103. <plugin>
  104. <groupId>org.springframework.boot</groupId>
  105. <artifactId>spring-boot-maven-plugin</artifactId>
  106. <configuration>
  107. <excludes>
  108. <exclude>
  109. <groupId>org.projectlombok</groupId>
  110. <artifactId>lombok</artifactId>
  111. </exclude>
  112. </excludes>
  113. </configuration>
  114. </plugin>
  115. </plugins>
  116. </build>
  117. </project>
2.yml文件
  1. server:
  2. port: 9090
  3. spring:
  4. mail:
  5. host: smtp.qq.com
  6. username: 2605703321@qq.com
  7. password: lrtxztoxiuodecic
  8. datasource:
  9. driver-class-name: com.mysql.cj.jdbc.Driver
  10. url: jdbc:mysql://localhost:3306/usersystem?serverTimezone=GMT%2b8
  11. username: root
  12. password: skd2580
  13. mvc:
  14. hiddenmethod:
  15. filter:
  16. enabled: true
  17. pathmatch:
  18. matching-strategy: ant_path_matcher
  19. mybatis:
  20. mapper-locations: classpath:mapper/*.xml #扫描所哟mybatis文件
  21. mybatis-plus:
  22. configuration:
  23. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

3、建立实体类、maper.xml、controller等层

三、Vue前端代码实现

1、APP.vue

  1. <template>
  2. <div id="app">
  3. <!-- <nav>
  4. <router-link to="/">Home</router-link> |
  5. <router-link to="/about">About</router-link>
  6. </nav> -->
  7. <router-view/>
  8. </div>
  9. </template>
  10. <style>
  11. #app{
  12. height: 100%;
  13. }
  14. </style>

2、vue配置跨域跳转
vue项目中config目录下的index.js文件中设置跨域

  1. proxyTable: {
  2. '/apis':{
  3. target: 'http://localhost:8089',//这里是你的sprintboot项目中的后台接口
  4. changeOrigin: true,//允许跨域
  5. pathRewrite: {//重写路径
  6. '^/apis':'/apis'//'/apis'就相当于写'http://localhost:8089/apis'
  7. }
  8. }

四、前后端分离跨域问题

方案:全局配置的方式

  1. package com.wn.rbac.config;
  2. import org.springframework.context.annotation.Configuration;
  3. import org.springframework.web.servlet.config.annotation.CorsRegistry;
  4. import org.springframework.web.servlet.config.annotation.EnableWebMvc;
  5. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  6. /**
  7. * @author :fengSir
  8. * @date :Created By 2022-05-06 22:08
  9. * @description :TODO
  10. */
  11. //@EnableWebMvc
  12. @Configuration
  13. public class MvcConfig implements WebMvcConfigurer {
  14. @Override
  15. public void addCorsMappings(CorsRegistry registry) {
  16. //每次调用registry.addMapping可以添加一个跨域配置,需要多个配置可以多次调用registry.addMapping
  17. registry.addMapping("/**")
  18. .allowedOrigins("*") //放行哪些原始域
  19. .allowedMethods("PUT", "DELETE","POST", "GET") //放行哪些请求方式
  20. .allowedHeaders("*") //放行哪些原始请求头部信息
  21. //.exposedHeaders("header1", "header2") //暴露哪些头部信息
  22. .allowCredentials(false) //是否发送 Cookie
  23. .maxAge(3600);
  24. // Add more mappings...
  25. }
  26. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/925023
推荐阅读
相关标签
  

闽ICP备14008679号