主题
Web组件
web组件,工程集成了web工程常用的功能,例如跨域配置、swagger(knife4j)、分页对象、全局异常处理、防xss攻击等,maven坐标如下:
xml
<dependency>
<groupId>cn.zjtele.pubinfo.boot</groupId>
<artifactId>pubinfo-boot-starter-web</artifactId>
</dependency>
跨域配置
前后端分离项目,通常会打开允许跨域。工程中已经进行处理,按需在业务工程中进行配置即可。 配置前缀为 pubinfo.cors
具体配置项说明
enable:是否开启允许跨域配置,默认true
allowAll:是否所有请求允许跨域,默认true
corsMapping:针对单路路径配置跨域策略,可配置多个。当allowAll为true时,无效。corsMapping属性如下:
mapping:路径,AntPath的匹配规则
allowedOrigins:允许源地址,多个以逗号分隔
allowedMethods:允许方法,多个以逗号分隔
allowCredentials:保留凭证信息,默认true
maxAge:预检有效时限,默认3600秒
allowedHeaders:允许的请求头,多个以逗号分隔 * exposedHeaders:排除不允许的请求头,多个以逗号分隔
具体配置示例如下:
properties
pubinfo.cors.enable=true
pubinfo.cors.allow-all=true
#pubinfo.cors.cors-mapping.all.mapping=/**
#pubinfo.cors.cors-mapping.all.allowed-methods=*
#pubinfo.cors.cors-mapping.all.allowed-origins=*
#pubinfo.cors.cors-mapping.all.allow-credentials=true
#pubinfo.cors.cors-mapping.all.allowed-headers=*
#pubinfo.cors.cors-mapping.all.max-age=3600
文档(knife4j)
前后端分离的接口文档,swagger增强型knife4j,文档地址与swagger不同,是 http://ip:port/context-path/doc.html
配置内容分为pubinfo-swagger
、springdoc
及knife4j
三部分 pubinfo-swagger,主要负责swagger模块的开启,及接口文档分组配置。
业务微服务在新增了相关接口后,需要修改resources/config目录下的application-sys-swagger.yml文件,增加相关文档扫描配置。
yaml
pubinfo:
swagger:
group:
demo:
name: xx服务接口
title: xx服务
enable: true
paths: /testDemo/**
packages-to-scan: cn.zjtele.pubinfo.demo.app.api
pubinfo-swagger配置项说明:
enable,是否开启pubinfo-swagger功能
group,接口文档的分组配置,类型为map,group的配置项如下
name,文档名称
enabled, 是否启用,默认true
title,文档标题,默认"API接口文档"
description,文档描述,默认"接口文档描述"
paths,文档路径,AntPath匹配规则,多个以逗号分隔
packages-to-scan,该分组接口扫描包列表,多个以逗号分隔 * headers,默认请求头,多个以逗号分隔
springdoc配置项说明:
- springdoc.swagger-ui.path,自定义swagger-ui HTML 文档路径,默认为/swagger-ui.html
- springdoc.swagger-ui.tags-sorter,对每个API的标签列表的默认排序,默认为alpha(按路径字母数字排序),或函数(请参阅 Array.prototype.sort() 以了解如何编写排序函数)。
- springdoc.swagger-ui.operations-sorter,它可以是“alpha”(按路径字母数字排序)、“method”(按 HTTP 方法排序)或函数(请参阅 Array.prototype.sort() 了解排序函数的工作原理)。 默认是服务器返回的顺序不变。
- springdoc.api-docs.enabled,是否开启OpenAPI文档,默认true
- springdoc.api-docs.path,配置OpenAPI文档路径,默认为/v3/api-docs
- springdoc.default-flat-param-object,是否默认展平参数,默认false,
knife4j配置项说明:
- knife4j.enable,是否开启Knife4j增强模式,默认true
- knife4j.setting.language,Ui默认显示语言,目前主要有两种:中文(zh-CN)、英文(en-US),默认中文
- knife4j.setting.swagger-model-name,重命名SwaggerModel名称
- knife4j.setting.enable-dynamic-parameter,是否开启动态请求参数
- knife4j.basic.enable,对Knife4j提供的资源是否开启BasicHttp校验
- knife4j.basic.username,basic用户名
- knife4j.basic.password,basic密码
统一异常处理
针对controller接口的抛出的异常,组件通过cn.zjtele.pubinfo.boot.web.exception.http.GlobalControllerExceptionHandler
进行了统一的异常处理,转化为ResponseData
返回。