04-学成在线之系统管理服务模块之查询数据字典表中的内容,前后端联调测试

前后端联调

配置前端环境

实际开发中先由后端工程师将接口设计好并编写接口文档并交给前端工程师,前后端的工程师就开始并行开发

  • 前端开发人员先自己mock数据即使用假数据进行开发,当后端代码完成后前端工程师尝试请求后端接口获取数据然后渲染到页面

第一步: 首先配置前端工程运行的环境,并在idea中配置node.js的路径

在这里插入图片描述

第二步: 启动前端工程,使用IDEA或VS Code打开project-xczx2-portal-vue-ts目录

第三步: 右键点击project-xczx2-portal-vue-ts目录下的package.json文件,点击Show npm Scripts打开npm窗口

第四步: 点击server右键点击Edit serve setting,下边对启动项目的一些参数进行配置

在这里插入图片描述

第五步: 设置前端工程的参数配置文件.env,由于前端默认连接的是项目的网关地址,所以查询课程信息时还需要修改网关地址为内容管理服务的地址

在这里插入图片描述

第六步: 右键点击Serve,点击Run serve启动工程,出现如下访问链接说明启动成功

在这里插入图片描述

第七步:访问首页地址http://localhost:8601/此时默认会访问内容管理服务http://localhost:8601/#/organization/course-list的课程查询的接口

第八步: 查询的课程信息有一部分数据是代码,对应的文字描述信息来自数据字典表,所以此时需要在系统管理服务中编写system/dictionary/all接口处理请求

在这里插入图片描述

系统管理服务

导入xuecheng-plus-system工程到项目工程的根目录,点击pom.xml文件右键Add as Maven Project可以自动识别maven工程

数据模型(model工程)

xuecheng-plus-system-model工程的com.xuecheng.system.model.po包下定义模型类,然后在model工程的pom文件添加MP等相关的依赖

在这里插入图片描述

@Data
@TableName("dictionary")
public class Dictionary implements Serializable {private static final long serialVersionUID = 1L;/*** id标识*/@TableId(value = "id", type = IdType.AUTO)private Long id;/*** 数据字典名称*/private String name;/*** 数据字典代码*/private String code;/*** 数据字典项--json格式[{"sd_name": "低级","sd_id": "200001","sd_status": "1"}, {"sd_name": "中级","sd_id": "200002","sd_status": "1"}, {"sd_name": "高级","sd_id": "200003","sd_status": "1"}]*/private String itemValues;
}

接口定义(api工程)

第一步: 在api接口工程的resources目录下添加工程所需的日志配置文件log4j2-dev.xml和属性配置文件bootstrap.yml

server:servlet:context-path: /system# 设置系统服务的端口为63110 port: 63110
#微服务配置
spring:application:name: system-service# 日志文件配置路径
logging:config: classpath:log4j2-dev.xml# swagger 文档配置
swagger:title: "学成在线内容管理系统"description: "内容系统管理系统对课程相关信息进行业务管理数据"base-package: com.xuecheng.contentenabled: trueversion: 1.0.0

第二步: 编写接口处理请求,然后向api工程的pom.xml文件中添加所WebMvc等相关的依赖

@Slf4j
@RestController
public class DictionaryController  {@Autowiredprivate DictionaryService  dictionaryService;@GetMapping("/dictionary/all")public List<Dictionary> queryAll() {return dictionaryService.queryAll();}@GetMapping("/dictionary/code/{code}")public Dictionary getByCode(@PathVariable String code) {return dictionaryService.getByCode(code);}
}

第三步: 在api接口工程中定义启动类SystemApplication,同时使用@EnableSwagger2Doc注解启用Swagger

@EnableScheduling
@EnableSwagger2Doc
@SpringBootApplication
public class SystemApplication {public static void main(String[] args) {SpringApplication.run(SystemApplication.class,args);}
}

业务层开发(service工程)

第一步: 在xuecheng-plus-system-service工程的resources/application.yml文件中配置数据库的连接参数

spring:application:name: system-servicedatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/xc_system?serverTimezone=UTC&userUnicode=true&useSSL=false&username: rootpassword: 123456
# 日志文件配置路径
logging:config: classpath:log4j2-dev.xml

第二步: 编写Service接口及其实现类

public interface DictionaryService extends IService<Dictionary> {/*** 查询所有数据字典内容* @return*/List<Dictionary> queryAll();/*** 根据code查询数据字典* @param code -- String 数据字典Code* @return*/Dictionary getByCode(String code);
}
@Slf4j
@Service
public class DictionaryServiceImpl extends ServiceImpl<DictionaryMapper, Dictionary> implements DictionaryService {@Overridepublic List<Dictionary> queryAll() {List<Dictionary> list = this.list();return list;}@Overridepublic Dictionary getByCode(String code) {LambdaQueryWrapper<Dictionary> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(Dictionary::getCode, code);Dictionary dictionary = this.getOne(queryWrapper);return dictionary;}
}

第三步: 在api工程中执行启动类SystemApplication即暴露系统管理服务的API接口,访问http://localhost:63110/system/dictionary/all查看结果

[{"id": 12,"name": "公共属性类型","code": "000","itemValues": "[{\"code\":\"1\",\"codeInt\":1,\"desc\":\"使用态\"},{\"code\":\"0\",\"codeInt\":0,\"desc\":\"删除态\"},{\"code\":\"-1\",\"codeInt\":-1,\"desc\":\"暂时态\"}]"},{"id": 15,"name": "课程审核状态","code": "202","itemValues": "[{\"code\":\"202001\",\"desc\":\"审核未通过\"},{\"code\":\"202002\",\"desc\":\"未提交\"},{\"code\":\"202003\",\"desc\":\"已提交\"},{\"code\":\"202004\",\"desc\":\"审核通过\"}]"},.......
]

解决前端请求的跨域问题

在内容管理的api工程config包下编写配置类GlobalCorsConfig,以下配置类指适用于Spring Boot2.4及以下版本

  • 向容器中注册一个跨域过虑器CorsFilter,这样每当服务器向浏览器响应结果的时候都会添加Access-Control-Allow-Origin响应头
package com.xuecheng.system.config;
/*** @description 跨域过虑器* @author Mr.M* @date 2022/9/7 11:04* @version 1.0*/@Configurationpublic class GlobalCorsConfig { /*** 允许跨域调用的过滤器*/@Beanpublic CorsFilter corsFilter() {CorsConfiguration config = new CorsConfiguration();//允许白名单域名进行跨域调用config.addAllowedOrigin("*");//允许跨越发送cookieconfig.setAllowCredentials(true);//放行全部原始头信息config.addAllowedHeader("*");//允许所有请求方法跨域调用config.addAllowedMethod("*");UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**", config);return new CorsFilter(source);}}

重启系统管理服务,访问前端工程首页可以正常访问http://localhost:63110/system/dictionary/all

在这里插入图片描述

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

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

相关文章

spring boot中使用Bean Validation做优雅的参数校验

一、Bean Validation简介 Bean Validation是Java定义的一套基于注解的数据校验规范&#xff0c;目前已经从JSR 303的1.0版本升级到JSR 349的1.1版本&#xff0c;再到JSR 380的2.0版本&#xff08;2.0完成于2017.08&#xff09;&#xff0c;目前最新稳定版2.0.2&#xff08;201…

QGIS结合CityEngine制作卫星图地形模型

参考 https://blog.csdn.net/qq_17523181/article/details/134136379 https://blog.csdn.net/qq_17523181/article/details/134306063 安装QGIS软件与CityEngine软件 一、QGIS获取卫星图 QGIS新建工程安装插件 加入卫星图&#xff08;需要科学上网&#xff09;&#xff0c;目…

直流有刷电机调速电路,输出端内置14V钳位结构,具有电源电压范围宽、功耗小、抗干扰能力强等功能的国产芯片GS016的描述

GS016是一款直流有刷电机调速电路&#xff0c;输出端内置14V钳位结构&#xff0c;具 有电源电压范围宽、功耗小、抗干扰能力强等特点。通过桥接内部电阻网 络&#xff0c;可以改变PWM占空比输出&#xff0c;达到控制电机转速作用。GS016采用SOP14的封装形式封装。 主要特点&am…

k8s存储

目录 nfs k8s 存储卷 volume pv和pvc 生命周期: PV 的状态 一个PV从创建到销毁的具体流程 pv访问模式 静态Pv的使用 动态storage StorageClass动态创建pv的过程 搭建 StorageClass NFS&#xff0c;实现 NFS 的动态 PV 创建 nfs 理论上nfs 其实并不是存储设备&…

我在Vscode学OpenCV 色彩空间转换

文章目录 色彩【 1 】色彩空间&#xff08;色域&#xff09;&#xff08;1&#xff09;**RGB色彩空间**与xyz色彩空间的转换将 RGB 色彩空间转换为 XYZ 色彩空间将 XYZ 色彩空间转换为 RGB 色彩空间 &#xff08;2&#xff09;**CMYK色彩空间**&#xff08;3&#xff09;**HSV*…

阿里云ACK(Serverless)安装APISIX网关及APISIX Ingress Controller

在k8s上安装apisix全家&#xff0c;通过helm安装很简单&#xff0c;但是会遇到一些问题。 安装 首先登录阿里云控制台&#xff0c;在ACK集群详情页&#xff0c;进入CloudShell&#xff0c;执行下面helm命令安装apisix、apisix-ectd、apisix-dashboard和apisix-ingress-contro…

ElasticSearch 增删改查操作

本文主要是介绍 ElasticSearch 的文档增删改查和批量操作&#xff0c;同时会介绍一些 REST API 返回状态码的具体含义。 我们先来看下这个表&#xff1a; 这个表包含了 Index、Create、Read、Update、Delete 这五种方法&#xff0c;我们先来看下 CRUD 操作的 HTTP 请求都长什么…

CSS Form表单布局

效果图 <Tab IsCard"true"><TabItem Text"表单信息-DIV版本"><div class"row"><div class"col"><label for"field1">工程名称:</label><input class"form-control" type&…

【避雷帖!】安美酷便携屏(安美特)

强烈建议别购买京东安美酷便携屏&#xff0c;太脆弱了&#xff0c;一碰就坏&#xff0c;客服态度不行&#xff0c;容易闪屏等等缺点。而且价格偏贵&#xff0c;淘宝上两百块的屏幕足够用了&#xff0c;没必要花六百多块钱&#xff0c;如果就是买来打游戏的话&#xff0c;也用不…

【腾讯云 HAI域探秘】浅尝一番AI绘画

前言 腾讯云高性能应用服务 HAI 是为开发者量身打造的澎湃算力平台。无需复杂配置&#xff0c;便可享受即开即用的GPU云服务体验。 我之前也参与锅一个AI绘画的活动&#xff0c;是基于InsCode的&#xff0c;都可以在线训练大模型&#xff0c;开发自己的AI应用程序。 这次腾讯…

希尔顿集团旗下酒店为宾客带来冬日活力新玩法

中国上海&#xff0c;2023年11月14日 - 据希尔顿集团发布的《2024年趋势报告》显示&#xff0c;新一代亚洲旅行者正在崛起&#xff0c;也更重视高品质、个性化的服务。希尔顿集团紧随市场脉搏&#xff0c;在即将到来的冬季为宾客精心策划了一系列特色体验&#xff0c;凭借其遍布…

冰点还原精灵Deep Freeze for mac版

Deep Freeze是一种系统恢复软件&#xff0c;它可以保护计算机系统免受恶意软件和不必要的更改。它的基本功能是在计算机重启后恢复到原始状态&#xff0c;即使用户进行了任何更改也不例外。 Deep Freeze主要用于公共场所的计算机&#xff0c;如图书馆、学校实验室和互联网咖啡馆…