vue实现前后端项目分离与交互②

╰+哭是因爲堅強的太久メ 2024-04-06 14:55 224阅读 0赞

后端数据的加载输入

    • 1.1 在src目录下创建一个utils文件夹,创建了一个request.js文件,然后下载axios。
    • 1.2 在request.js中添加以下代码,已解决前后端连接时产生的跨域问题
    • 1.3 在自己创建的vue文件中添加methods中的queryUserList()方法用来获取后端数据
    • 1.4 调用aixo方法实现异步加载, 在main.js文件中加入代码:
    • 1.5成功传输

vue框架搭建看上一个博客:vue与idea实现前后端项目分离与交互①

1.1 在src目录下创建一个utils文件夹,创建了一个request.js文件,然后下载axios。

在这里插入图片描述

1.2 在request.js中添加以下代码,已解决前后端连接时产生的跨域问题

  1. import axios from 'axios'
  2. export function request(config) {
  3. const request = axios.create({
  4. baseURL: 'api', // 后端请求端口设置,根据自己的端口进行设置
  5. timeout: 4000 // 超时时间
  6. })
  7. // request 请求拦截
  8. // 可以在请求发送前对请求做一些处理
  9. // eg.统一加上token,对请求参数统一加密
  10. request.interceptors.request.use(config => {
  11. config.headers['Content-Type'] = 'application/json;charset=utf-8';
  12. // console.log(config);
  13. // config.headers['token'] = user.token; // 设置请求头
  14. return config
  15. }, error => {
  16. console.log(error);
  17. });
  18. // response 响应拦截
  19. // 可以在接口响应后统一处理结果
  20. request.interceptors.response.use(
  21. response => {
  22. let res = response.data;
  23. // console.log(res);
  24. // 如果是返回的文件
  25. if (response.config.responseType === 'blob') {
  26. return res
  27. }
  28. // 兼容服务端返回的字符串数据
  29. if (typeof res === 'string') {
  30. // 如果是json字符串,将json字符串转换为json对象
  31. res = res ? JSON.parse(res) : res
  32. }
  33. return res;
  34. },
  35. error => {
  36. console.log('err' + error) // 控制台打印错误信息,用于调试
  37. })
  38. // 直接返回
  39. return request(config)
  40. }
  41. // export default request

1.3 在自己创建的vue文件中添加methods中的queryUserList()方法用来获取后端数据

  1. <template>
  2. <div>
  3. <el-table
  4. :data="tableData"
  5. style="width: 100%">
  6. <el-table-column
  7. prop="id"
  8. label="id序号"
  9. width="180">
  10. </el-table-column>
  11. <el-table-column
  12. prop="age"
  13. label="年龄"
  14. width="180">
  15. </el-table-column>
  16. </el-table>
  17. </div>
  18. </template>
  19. <script>
  20. import {
  21. request } from "../../utils/request";
  22. export default {
  23. data(){
  24. return{
  25. tableData: [{
  26. }],
  27. }
  28. },
  29. methods:{
  30. //获取服务器上的用户列表,并将列表呈现到前端页面中的表格中
  31. //向服务器发送一个名为 userServlet 的请求,获取用户列表
  32. queryUserList(){
  33. request({
  34. url: '/userServlet' //请求的 URL 是 /userServlet
  35. }).then(res => {
  36. console.log(res); //当响应结果返回并成功时,函数将服务器响应的数据赋值给 this.tableData
  37. this.tableData = res; //,this.tableData 将会被用来呈现在前端的表格中,用于显示用户数据
  38. }, err => {
  39. console.log(err); //如果请求出现错误,该函数将会输出错误信息。
  40. })
  41. }
  42. },
  43. mounted() {
  44. this.queryUserList();// 钩子,页面加载时调用此方法。
  45. }
  46. }
  47. </script>
  48. <style>
  49. </style>

1.4 调用aixo方法实现异步加载, 在main.js文件中加入代码:

  1. import axios from 'axios'
  2. import request from "@/utils/request"; //用于封装 axios 进行更高层次的请求处理的工具函数
  3. Vue.prototype.request = request //将 request 工具函数在整个 Vue 实例中访问和调用。
  4. Vue.prototype.$axios = axios //将 axios 在整个 Vue 实例中访问和调用。
  5. axios.defaults.baseURL = '/api' //在请求时可以省略掉本地地址并直接使用相对路径

如图所示:
在这里插入图片描述

  1. 最后,如果运行时出现了如下警告。这个警告提示说在 ./src/main.js 中,你使用了 import request from "@/utils/request"
  2. 但是在文件路径 @/utils/request 中没有找到名为 default 的导出项。这意味着在 @/utils/request 模块中没有使用
  3. export default request 导出,而是使用了 export const request 这种方式导出的。
  4. 为了解决这个警告,你可以在 ./src/main.js 文件中将 import request from "@/utils/request"
  5. 修改为 import {
  6. request } from "@/utils/request",因为 request 是该模块的具名导出项。这样就可避免警告提示了。

在这里插入图片描述
修改:
在这里插入图片描述

1.5成功传输

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,224人围观)

还没有评论,来说两句吧...

相关阅读