Skip to content

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-swaggerspringdocknife4j三部分 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返回。

XSS过滤器

完善中……