在线教育项目【前端路由和Ajax实现分析与后端连接分析】

news/2024/4/29 17:34:15/文章来源:https://blog.csdn.net/m0_64550837/article/details/126689975

目录

1,前端路由实现分析

1.1:入口文件中调用路由

1.2:定义路由模块

1.3:编写路由模块文件

1.3.1:配置一个或者多个子路由

1.3.2:编写教师路由对应的文件

 2,后端接口分析(与后端网关连接)

2.1:访问前缀

2.2:axios工具类配置

2.2.1:查看工具类

2.2.3:禁用模拟数据

2.3:自定义后端接口

2.3.1:修改用户登录文件


1,前端路由实现分析

1.1:入口文件中调用路由

  • src/main.js  这个文件中导入了路由 ,找一下路由位置src下的router

1.2:定义路由模块

 找到路由下的index.js文件

modules:路由模块文件

第一步:创建一个老师模块的路由文件teacher.js

第二步:在index.js文件中导入teacher.js文件

import teacherRouter from './modules/teacher'

 可以看到导入之后是灰的这是因为还没有声明使用这个文件

第三步:声明teacher.js这个文件

 

1.3:编写路由模块文件

可以模块teacher.js文件中书写teacher对应的路由变量

1.3.1:配置一个或者多个子路由

修改teacher.js

import Layout from '@/layout'

const teacherRouter = {

path: '/teacher', // 当前模块前缀路径,必须以/开头

component: Layout, // 采用布局组件显示当前模块【默认】

redirect: '/teacher/teacherList', // “教师管理”默认显示路由

name: '教师管理', // 路由名称

meta: {

title: '教师管理', // 一级菜单名称,children.length==0 隐藏

icon: 'table' // 一级菜单图标,children.length==0 隐藏

},

children: [

{

path: 'teacherList',

component: () => import('@/views/edu/teacher/teacherList'),

name: '教师列表',

meta: { title: '教师列表' } //二级菜单名称

},

{

path: 'teacherAdd',

component: () => import('@/views/edu/teacher/teacherAdd'),

name: '添加老师',

meta: { title: '添加老师' } //二级菜单名称

}

]

}

export default teacherRouter

 

1.3.2:编写教师路由对应的文件

 

  • 创建列表页面 @/views/edu/teacher/teacherList.vue

    <template><div>所有老师</div>
    </template><script>
    export default {name: 'WORKSPACE_NAMEteacherList',data() {return {};},mounted() {},methods: {},
    };
    </script><style lang="scss" scoped></style>
  • 创建添加页面 @/views/edu/teacher/teacherAdd.vue

<template><div>添加老师</div>
</template><script>
export default {name: 'WORKSPACE_NAMEteacherAdd',data() {return {};},mounted() {},methods: {},
};
</script><style lang="scss" scoped></style>

 2,后端接口分析(与后端网关连接)

2.1:访问前缀

 修改 .env.development 文件

 和后端网关访问保持一致

 这是之前的登录访问的路径:

 通过配置文件修改对接后端网站之后的访问路径:

2.2:axios工具类配置

2.2.1:查看工具类

 element ui admin 提供了对原生axios进行了增强的工具类

  • 位置:@/utils/request.js

2.2.2:修改工具类

为了方便查看报错修改一下request.js文件

// 请求异常时,打印提示(路径等,数据等)
console.info(response.config, res)

 

2.2.3:禁用模拟数据

这些前期工作已经完成 

2.3:自定义后端接口

为了方面后期程序的维护,统一将所有axios访问路径,抽取到 @/api下,且一个模块创建一个js文件。

2.3.1:修改用户登录文件

修改 @/api/user.js

import axios from '@/utils/request'export function login(user) {//这边登录功能属于user后端先不写//return axios.post(`/user-service/user/login`,user)//临时模拟数据进行登录完善老师模块的功能return axios.post(`/teacher-service/user/login`,user)}export function getInfo(token) {//return axios.get('/user-service/user/info',{return axios.get('/teacher-service/user/info',{params: {token}});
}export function logout() {return axios({url: '/vue-element-admin/user/logout',method: 'post'})
}

这时访问路径就已经完全改好,404属于可控异常 

在 teacher服务中,创建临时登录处理类

 

JavaBean:User

package com.czxy.zx.temp;import lombok.Data;@Data
public class User {private String username;private String password;
}

 处理类:UserController,Element UI Admin

@RestController
@RequestMapping("/user")
@Api(tags = "主页登录",description = "模拟登录")
public class UserController {/*** 用户登录* @param user* @return*/@PostMapping("/login")@ApiOperation("模拟登录")public BaseResult login(@RequestBody User user) {Map<String,Object> map = new HashMap<>();if("admin".equals(user.getUsername())) {map.put("token", "admin-token");} else {map.put("token", "editor-token");}return BaseResult.ok("登录成功",map);}@GetMapping("/info")@ApiOperation("模拟登录")public BaseResult login(String token) {Map<String,Object> map = new HashMap<>();if("admin-token".equals(token)) {map.put("roles", Arrays.asList("admin"));map.put("avatar", "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif");map.put("name", "Super Admin");} else {map.put("roles", Arrays.asList("editor"));map.put("avatar", "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif");map.put("name", "Normal Editor");}return BaseResult.ok("登录成功",map);}
}

 这边也是成功登录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_5552.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查询数字的最邻近

这道题目要用二分+桶排的方式解决 函数: l~r找v c:靠左/右(‘l’/‘r’) 靠左和靠右用STL函数二分就行,这里讲一下思路,二分出最靠左/右的v值(but二维,在but[v][0~len]区间二分)再判断是否在区间内在区间内输出but[v][a](a为二分的答案)否则输出-1。 最后再考虑一下需要…

注解Annotation

注解是一种引用数据类型,重点掌握Deprecated(表示已过时),Override(表示重写)。 元注解是用来标注注解类型的注解如Target(用来标注注解可以出现在哪些位置)、Retention(用来标注最终保存到哪里)。 package com.javastudy.example13;import java.lang.annotation.Ann…

计算机毕业设计php+vue基于微信小程序的员工宿舍报修系统

项目介绍 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时…

神奇的卡尔曼滤波,目标追踪的福音

前言 卡尔曼滤波算法由匈牙利数学家Kalman提出&#xff0c;主要基于线性系统提出。这里我们将其用于汽车跟踪&#xff0c;并对其基本原理进行介绍。 神奇的卡尔曼滤波&#xff0c;目标追踪的福音 1. 背景知识 1.1 时间序列模型 1.2. 滤波 1.3. 线性动态系统 2. 卡尔曼滤波…

python生成PDF报告

如何使用Python制作pdf文档&#xff1f; PDF报告生成软件开发&#xff08;学习记录&#xff09; Python生成图文并茂的PDF报告 官方用户手册 字体下载注册问题 在windows找到字体文件&#xff1a;C:\Windows\Fonts 在你的python环境引入字体 D:\devementtool\Anaconda3-202…

Java并发 JUC工具类:Semaphore详解

文章目录Semaphore源码分析类的继承关系类的内部类类的内部类 - Sync类类的内部类 - NonfairSync类类的内部类 - FairSync类类的属性类的构造函数核心函数分析 - acquire函数核心函数分析 - release函数Semaphore 示例更深入理解单独使用Semaphore是不会使用到AQS的条件队列的场…

USB4 V2.0即将发布,速度高达80Gbps

关注星标公众号&#xff0c;不错过精彩内容作者 | strongerHuang微信公众号 | strongerHuang2019年3月初&#xff0c;USB-IF组织官方宣布了下一代 USB4.2019年9月3日&#xff0c;USB-IF组织正式发布 USB4(现在称USB4 V1.0)规范。最近&#xff0c;也就是2022年9月1日&#xff0c…

推荐系统中的特征工程

摘要&#xff1a;深度学习时期&#xff0c;与CV、语音、NLP领域不同&#xff0c;搜推广场景下特征工程仍然对业务效果具有很大的影响&#xff0c;并且占据了算法工程师的很多精力。数据决定了效果的上限&#xff0c;算法只能决定逼近上限的程度&#xff0c;而特征工程则是数据与…

uniapp 之 获取底部安全距离,状态栏高度等

特定样式注意点固定底部按钮自定义顶部导航栏其他工作中我们常常需要设置一些特定样式&#xff1a; 固定底部按钮自定义顶部导航栏…… 固定底部按钮 这里需要注意的是&#xff0c;真机运行时底部时IOS是存在安全距离的&#xff0c;这个时候就需要我们处理一下 .u-fixed-b …

Echarts y轴相关配置

目录1 简介2 y轴配置2.1 y轴主要属性2.2 y轴刻度设置3.总结1 简介 本篇介绍我们在使用Echarts画图时常用的一些y轴坐标设置&#xff0c;如y轴位置&#xff0c;y轴偏移量、y轴刻度、y轴最大最小值等&#xff1b; 2 y轴配置 2.1 y轴主要属性 只有一个纵坐标的情况下&#xff0…

TLM通信总结1

事务级建模 (TLM) 用于模块之间的通信。 TLM 是实现基于事务的方法的概念,这些方法可用于模块之间的通信。 UVM TLM UVM 为 TLM 库提供事务级接口,ports,exports,imp ports,and analysis ports。所有这些 TLM 元素都需要发送事务、接收事务以及从一个组件传输到另一个组件…

STM32物联网项目-程序框架思想

程序框架思想 一、程序框架的构想 1、STM32cubeMX生成的代码与添加的应用代码分离; 2、利用STM32cubeMX重新生成代码&#xff0c;不影响应用代码; 3、应用代码的添加&#xff0c;移除与修改&#xff0c;不影响cube生成的代码; 4、代码架构方便阅读&#xff0c;编辑&#x…

领域最全!多传感器融合方法综述!(Camera/Lidar/Radar等多源异构数据)

点击进入→自动驾驶之心技术交流群 后台回复【ECCV2022】获取ECCV2022所有自动驾驶方向论文! 自动驾驶中的多传感器融合 原文:Multi-Sensor Fusion in Automated Driving: A Survey 自动驾驶正成为影响未来行业的关键技术,传感器是自动驾驶系统中感知外部世界的关键,其协作…

Java 开发中的 Lombok 是什么?

一. 血案 今天有个学生告诉我&#xff0c;他在项目中使用Mybatis框架查询时报错&#xff0c;提示无法创建对象。但自己仔细地检查了代码都没有发现错误&#xff0c;于是他就半夜拼命地给我发消息求救。 我起床拿手机&#xff0c;还差点摔倒闪了我的老腰&#xff0c;我老婆看我…

猿创征文|工作中遇到技术盲区后的自我成长

猿创征文&#xff5c;工作中遇到技术盲区后的自我成长 1、立场 我是一名python后端开发程序员&#xff0c;在一家创业公司中兢兢业业工作快两年了&#xff0c;从软件架构、开发、测试、部署、运维一手经办&#xff0c;到开发文档、API接口、开发周期、设备交付、安装完成全程…

面向对象编程原则(03)——单一职责原则

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 参考资料 《大话设计模式》 作者&#xff1a;程杰《Java设计模式》 作者&#xff1a;刘伟《图解设计模式》 作者&#xff1a;结城浩《重学Java设计模式》 作者&#xff1a;…

[论文阅读] HairGAN: Spatial-Aware Palette GAN for Hair Color Transfer

[论文地址] [代码] [ICME 22] Abstract 头发颜色转移的目的是将头发颜色从参考图像转移到原始图像&#xff0c;同时保持原始图像的头发结构。然而&#xff0c;由于复杂的头发结构以及原始图像和参考图像之间头发区域的错位&#xff0c;现有的方法不能很好地完成这一任务。为了…

CTFshow_MISC入门_图片篇(基础操作信息附加)wp

文章目录前言Tipsmisc1misc2misc3misc4misc5misc6misc7misc8misc9misc10misc11后记前言 挺长时间没有打CTF了&#xff0c;感觉技术从之前就一直没有提升多少&#xff0c;摸了段时间的渗透&护网&#xff0c;感觉CTF的基础还是比较重要&#xff0c;温故而知新&#xff0c;就…

03.thymeleaf在业务系统中的应用

thymeleaf是Java方向开源的服务端模板引擎&#xff0c;支持多种格式的格式渲染。在存前端项目盛行的年代&#xff0c;webUI纯服务端渲染已经不再适合&#xff0c;但并不影响服务端模板的继续应用。 在企业集成业务系统中&#xff0c;由于低代码平台的业务标准化/组件化/所见及…

[ Linux长征路第三篇 ] 权限理解

目录 1.root用户和普通用户相互切换 2.文件类型和访问权限(事物属性) 2.1 文件类型 2.2 基本权限 2.3 文件权限值得表示方法 1&#xff09;字符表示法 2&#xff09;8进制数值表示法 2.4 文件访问权限的相关设置方法 1) chomd 2&#xff09;三位8进制数字 3) cho…