自研cloud框架专题–web模块(三)

  • 项目特点
  • 一:框架集成
    • 1.引入核心依赖
    • 2.配置相关功能
  • 二:功能介绍
    • 1.swagger支持并提供swagger快速配置
    • 2.knife增强swagger支持
    • 3.全局请求参数校验(Validation)支持
    • 4.字段脱敏支持
    • 5.默认jackson序列化
    • 6.xss,cors支持
    • 7.访问日志支持
    • 8.全局异常处理,统一返回结果
    • 9.系统关键及常用信息启动显示

开源地址:https://github.com/2892824942/ty-cloud/blob/main/ty-framework/ty-framework-service

项目特点

  • 自动集成spring-boot-web模块
  • swagger支持并提供swagger快速配置
  • knife增强swagger支持
  • 全局请求参数校验(Validation)支持
  • 字段脱敏支持
  • 默认jackson序列化
  • xss支持
  • cors支持
  • 访问日志支持
  • 全局异常处理,统一返回结果
  • 系统关键及常用信息启动显示

一:框架集成

1.引入核心依赖

暂时未发到中央仓库(准备中)…


<dependency><groupId>com.ty</groupId><artifactId>ty-framework-web-starter</artifactId><version>${最新版本}</version>
</dependency>

2.配置相关功能

#以下功能按需配置
framework:web:#注意:开启此配置后,custom-api中的controller将会全部增加prefix访问前缀enable-mvc-url-prefix: truecustom-api:core:prefix: /corecontroller: '**.web.**'other:prefix: /controller: '**'xss:enable: true#hashId配置hash-id:enable: truemin-length: 4salt: 'test111'enable-cors: trueswagger:author: 大壮version: 1.0.0description: domo项目接口文档title: 接口文档url: http://127.0.0.1:8080/swagger-ui/index.htmllicense-url: license-urlemail: 282824942@qq.com

二:功能介绍

1.swagger支持并提供swagger快速配置

在这里插入图片描述

  • swagger配置
framework:swagger:author: suyouliangversion: 1.0.0description: domo项目接口文档title: 接口文档url: http://127.0.0.1:8080/swagger-ui/index.htmllicense-url: license-urlemail: test@qq.com
  • WebConfig配置
framework:web:custom-api:core:prefix: /corecontroller: '**.web.**'other:prefix: /controller: '**'

custom-api下可以配置多个分组,每个分组将自动在swagger中生成一个分组

prefix按照前缀匹配

如没有统一前缀,可手动加上前缀或开启enable-mvc-url-prefix配置,开启后,会在controller的访问路径自动加上prefix

2.knife增强swagger支持

knife需要手动开启:

#knife4j相关配置,swagger增强
knife4j:enable: truesetting:language: zh_cn

knife界面:
在这里插入图片描述

3.全局请求参数校验(Validation)支持

新增
具体使用方式不在赘述,和官网无差别.

新增@InEnum,@Mobile,@Telephone注解,用于校验枚举,手机号,电话号码

4.字段脱敏支持

  • 单向字段脱敏:
    银行卡,车牌号,中文名字,邮箱,手机号,电话号码,身份证号,密码等注解

  • 双向字段脱敏:
    有的业务场景,不希望自增的id直接返回前端导致业务暴露或者其他安全目的.可以使用@HashedId注解
    @HashedId注解可自动在序列化时将id进行脱敏处理,接受时进行还原处理

使用示例

在实体类中标记

//在实体类中标记
public class AddrVO implements BaseIdDO<Long> {private static final long serialVersionUID = 1L;@Schema(description = "id")@HashedIdprivate Long id;}

在参数上标记


public class UserController {@Resourceprivate IUserService userService;@GetMapping("/getById")public BaseResult<UserFullDTO> getById(@HashedId Long id) {return BaseResult.success(userService.getById(id));}
}

5.默认jackson序列化

自动集成jackson进行序列化

  • 解决数值超过 2^53-1,在 JS 会出现精度丢失问题
  • 解决日期格式问题,Date及LocalDateTime兼容,且支持spring.jackson.date-format配置
  • 增加localDate,LocalTime序列化

6.xss,cors支持

需要开启如下配置

framework:xss:enable: true#排除哪些url不走xss过滤exclude-urls: "/test/**","/ops/**"enable-cors: true

7.访问日志支持

spring web接口访问过程,通过filter将访问及返回的上下文信息整理,并通过springEvent事件广播,可自定义进行处理

以下是监听对应事件简单打印log

@Component
@Slf4j
public class ApiLogListener {@EventListenerpublic void onApiAccessLogEvent(ApiAccessLogEvent event) {log.info("api access log eventData: \r\n{}", JsonUtils.toJson(event.getSource()));}@EventListenerpublic void onApiErrorLogEvent(ApiErrorLogEvent event) {log.error("api error log eventData: {}", JsonUtils.toJson(event.getSource()));}
}

8.全局异常处理,统一返回结果

具体见:BaseResult,GlobalExceptionHandler

9.系统关键及常用信息启动显示

在这里插入图片描述

更详细的使用案例,见:https://github.com/2892824942/framework-demo

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

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

相关文章

程序运行的基本流程

操作系统&#xff08;应用程序&#xff09;&#xff1a; 装系统就是将操作系统安装到硬盘1中 计算机启动的基本过程&#xff1a; 总结&#xff1a; 程序一般保存在硬盘中&#xff0c;软件安装的过程就是将程序写入硬盘的过程程序在运行时会加载进入内存&#xff0c;然后由CPU…

【Docker】若依ruoyi项目部署

一 搭建局域网 1 # 搭建net-ry局域网&#xff0c;用于部署若依项目docker network create net-ry --subnet172.68.0.0/16 --gateway172.68.0.1 # 注意1&#xff1a;关闭宿主机的防火墙&#xff0c;否者容器内部的MySQL、redis等服务&#xff0c;外部访问不了&#xff1b;开放…

VS配置开发与远程调试笔记

先简单写一下&#xff0c;后续详细补充 场景&#xff1a;本地机器开发&#xff0c;虚拟机调试 准备工作&#xff1a; 由于要将生成的文件生成在虚拟机&#xff0c;避免反复拷贝&#xff0c;直接配置虚拟机共享文件夹进行写入&#xff0c;步骤如下&#xff1a; 虚拟机打开网…

董宇辉所有商标已转到与辉同行名下!

近日董宇辉此前由东方优选申请的所有商标已转到与辉同行主体名下&#xff0c;普推知产老杨经检索发现&#xff0c;这些商标都是2022年6月由东方优选提交申请&#xff0c;在2023年12月28时提交商标转让&#xff0c;最近转让成功&#xff0c;转让周期是2个半月左右。 转让的商标除…

uniapp在页面中中获取pages.json下pages设置navigationBarTitleText这个值?uniapp获取页面标题

一、问题描述 有个需求就是,在app.vue页面中首先会隐藏所有页面的title,然后在相应的页面会判断当前环境是否是在微信浏览器内&#xff0c;如果不是&#xff0c;则还原标题。 二、解决方法 在 pages.json 文件中设置 navigationBarTitleText&#xff0c;例如&#xff1a; {&qu…

云计算 3月8号 (WEB服务及Apache 服务的搭建与配置——基于域名 端口 Ip多方式访问)

1、WEB服务简介 # 目前最主流的三个Web服务器是Apache、Nginx、 IIS。 - WEB服务器一般指网站服务器&#xff0c;可以向浏览器等Web客户端提供网站的访问&#xff0c;让全世界浏览。 - WEB服务器也称为WWW(WORLD WIDE WEB)服务器&#xff0c;主要功能是提供网上信息浏览服务。 …

PubMedQA数据集分享

来源: AINLPer公众号&#xff08;每日干货分享&#xff01;&#xff01;&#xff09; 编辑: ShuYini 校稿: ShuYini 时间: 2024-2-28 该数据集由匹兹堡、卡内基梅隆等大学提出&#xff0c;它是第一个需要对生物医学研究文本进行推理&#xff0c;特别是其定量内容的问答数据集。…

C语言分析基础排序算法——选择排序

目录 选择排序 选择排序 堆排序 选择排序 选择排序 选择排序的基本思路是&#xff0c;定义两个区间指针begin和end&#xff0c;遍历数组中的每一个数据找出最大的数据的下标和最小的数据的下标&#xff0c;之后与begin和end指针分别交换小数据与begin的位置以及大数据和e…

资源池化单集群安装经验总结

登录linux环境通过跳板机用ssh命令连接分配的ip&#xff0c;将准备好的openGauss安装包以及xml文件上传到跳板机用scp命令传到自己的节点。 问题1&#xff1a;预安装包版本问题 解决方法&#xff1a;查看自己机器的系统&#xff0c;至openGauss官网下载正确版本的安装包 open…

【Linux】--- Linux编译器-gcc/g++、调试器-gdb、项目自动化构建工具-make/Makefile 使用

目录 一、Linux编译器-gcc/g1.1 gcc/g 使用方法1.2 程序的翻译过程1.3 链接 -- 动静态链接特点及区别 二、Linux调试器-gdb2.1 背景2.2 使用方法 三、Linux项目自动化构建工具-make/Makefile3.1 背景3.2 原理3.3 项目清理 一、Linux编译器-gcc/g 1.1 gcc/g 使用方法 格式&…

利用“定时执行专家”循环执行BAT、VBS、Python脚本——含参数指定功能

目录 一、软件概述 二、VBS脚本执行设置 三、触发器设置 四、功能亮点 五、总结 在自动化办公和日常计算机任务管理中&#xff0c;定时执行脚本是一项非常重要的功能。今天&#xff0c;我将为大家带来一款名为“定时执行专家”的软件的评测&#xff0c;特别是其定时执行VB…

不允许你不知道Python函数的返回值

函数可以通过return一次性返回多个数据&#xff0c;返回的数据以元组的形式保存。函数中若出现了return&#xff0c;return后面的程序不会执行。若函数中需要将某些数据返回&#xff0c;使用关键字return。若return后面没有返回任何数据&#xff0c;仅仅表示结束程序&#xff0…