1 Star 0 Fork 106

lwj / swagger-spring-boot

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

简介

什么是 swagger?

Swagger 是一款自动生成在线文档 + 接口调试的工具。在 WEB 开发中不可否认的是我们需要给客户端提供 API 接口,这个时候需要借助 postman、rap 等工具 进行调试,以便于接口能正常交付给客户端人员,用过其它工具的应该知道一个 POST 请求一堆参数是非常枯燥且烦人的事情,而 swagger 就是让你摆脱这种束缚感....

项目群

近期询问 swagger-spring-boot-starter 的朋友越来越多,所以就创建了一个意见反馈群(QQ群:868804589),BUG反馈和优化/美化的建议都可以在群里进行交流

源码地址

swagger-spring-boot-starter 是一款建立在swagger基础之上的工具包,利用SpringBoot自动装配的特性,简化了传统swagger的繁琐配置

项目介绍

  • swagger-vue :采用 Vue 编写的源代码,如果您对UI有更好的想法或者建议可以在该项目上进行扩展,它就是 UI 的源文件
  • swagger-vue-ui :编译后的纯 HTML 文件,如果你对 swagger-spring-boot-starter 包中的 UI 感到不满,你也可以选择排除 swagger-vue-ui 然后用第三方的...
  • swagger-spring-boot-starter : 自动装配 swagger 的扩展包

有兴趣扩展自己的Starter包的可以参考文章:编写自己的starter项目

如果该项目对您有帮助,欢迎Fork和Star,有疑问可以加 QQ:1837307557一起交流 ,如发现项目BUG可以提交Issue

使用

1.X 版本需要在启动类添加 @EnableSwagger2Doc 但是 2.X 版本后无需添加,请知晓...

  • pom.xml中引入依赖:
<dependency>
    <groupId>com.battcn</groupId>
    <artifactId>swagger-spring-boot-starter</artifactId>
    <version>2.1.2-RELEASE</version>
</dependency>

中文乱码

如果遇到中文乱码,请确保自己的资源文件是 UTF-8 然后添加以下配置(一般情况只要自身环境正确,无需额外配置)

server.tomcat.uri-encoding=UTF-8
spring.http.encoding.force=true
spring.http.encoding.enabled=true
spring.http.encoding.charset=UTF-8
spring.messages.encoding=UTF-8
  • application.yml中添加
spring:
  swagger:
    enabled: true
  • application.properties中添加
spring.swagger.enabled=true

更新记录

2.1.2
  发布时间:2018-11-14
  更新内容:
    1.解决调试面板 String 类型数据不显示
    2.解决请求参数为 JSONObject时 没有按 JSON 传输
    3.调试接口界面中 请求参数值可以添加 @ApiModelProperty 注解中 example 配置的默认值
2.1.1
  发布时间:2018-11-08
  更新内容:
    1.调试面板JSON渲染美化
    2.美化登陆页面UI
    3.修复 TreeNode 数据结构导致内存溢出BUG
    4.优化VUE的包目录结构和代码风格
2.1.0
  发布时间:2018-09-22
  更新内容:
    1.调试面板JSON渲染美化
    2.修复授权模式下任意密码可以登陆问题
    3.修复ApiModelProperty#required 不生效问题
2.0.7
  发布时间:2018-08-17
  更新内容:
    1.解决无请求参数无法调试,js报错
    2.解决编辑 json 会导致 json 加一个双引号传输
2.0.6
  发布时间:2018-07-25
  更新内容:
    1.解决请求错误时,异常信息不渲染的BUG
    2.优化登陆保存策略
2.0.5
  发布时间:2018-07-24
  更新内容:
    1.修复 spring.swagger.host 导致调试面板失效BUG
2.0.4
  发布时间:2018-07-23
  更新内容:
    1.修改未自动注入BUG(在2.0.3中需要写明 ComponentScan)
2.0.2(具体效果看 samples-basic 中的项目示例)
2.0.3
  发布时间:2018-07-17
  更新内容:
    1.UI美化
    2.路由优化
    3.文件上传控件美化
2.0.2(具体效果看 samples-basic 中的项目示例)
  发布时间:2018年07月10日
  更新内容:
    1.UI添加响应结果
    2.UI添加全局认证窗口
    3.修复接口过多导致内存溢出泄露BUG
    4.优化代码风格与标准
    5.美化弹窗
    6.添加安全验证过滤器(这样一来即使你想线上使用 swagger 一样可以)
    7.登陆UI,保障接口安全
    8.添加请求响应时间
    9.升级Spring Boot 版本为 2.0.3-RELEASE
2.0.1
  发布时间:2018年06月19日
  更新内容:
    1.重写UI
    2.升级Spring Boot 为2.0.2
    3.支持接口全局认证(设置一次 Token 需验证的地址自动将值写入到请求头/请求体中)
    4.全局响应返回
    5.支持可选的 Bean 验证插件;
        由于日常开发中发现默认启动的验证插件扫描耗时比较久(由于我电脑弱,扫描时间大概在3-5秒...)
        故而将插件修改为可选的,默认是关闭
    6.支持选项卡切换
    7.修复多余的斜杠
1.4.5
  发布时间:2018年04月26日
  更新内容:
    1.解决配置 `context-path` 导致 `swagger-ui.html` 无法显示BUG
1.4.4
  发布时间:2018年01月05日
  更新内容:
    1.优化选项卡切换
1.4.3
  发布时间:2017年12月22日
  更新内容:
    1.修复CRUL口令
    2.提升操作体验
1.4.2
  发布时间:2017年12月15日
  更新内容:
    1.修复CRUL口令
    2.渲染菜单列表颜色
1.4.1
  发布时间:2017年12月13日
  更新内容:
    1.修复CRUL口令
    2.修复DELETE类型请求部分存在404问题
1.4.0
  发布时间:2017年12月14日
  更新内容:
    1.PATCH无法正确渲染
1.3.9
  发布时间:2017年9月17日 
  更新内容:
    1.修复对象深度拷贝
1.3.8
  发布时间:2017年12月8日 
  更新内容:
    1. 解决1.1.0发版中的bug    
1.1.0
  发布时间:2017年12月1日
  更新内容:
    1. 完成基础功能

重写UI

操作风格 - 2.0.2 版本

# 2.0.3 版本新特性开启后访问 swagger-ui.html 会自动路由到登陆页面保障接口信息不被暴露
spring.swagger.security.filter-plugin=true
# 配置账号密码
spring.swagger.security.username=battcn
spring.swagger.security.password=battcn

接口说明

操作风格 - 2.0.1 版本

# 配置
spring.swagger.api-key.key-name=myToken
# 2.0.1 版本新特性 支持可选的 Bean 验证插件
spring.swagger.validator-plugin=false
# 定义全局响应返回
spring.swagger.global-response-messages.POST[0].code=400
spring.swagger.global-response-messages.POST[0].message=server response 400
spring.swagger.global-response-messages.POST[1].code=404
spring.swagger.global-response-messages.POST[1].message=server response 404

接口说明

接口说明

接口说明

操作风格 - 1.4.3支持

接口说明

接口说明:折叠式Model

接口说明

接口说明:折叠式表单响应内容,告别长长的滚动条

接口说明

在线调试

在线调试

配置说明

spring.swagger.enabled:提供该配置目的是方便多环境关闭,一般生产环境中不会暴露它,这时候就可以通过 java -jar xx.jar --spring.swagger.enabled=false 动态关闭,也可以在多环境配置写好

properties

spring.swagger.enabled=是否启用swagger,默认:true
spring.swagger.title=标题
spring.swagger.description=描述信息
spring.swagger.version=版本
spring.swagger.license=许可证
spring.swagger.licenseUrl=许可证URL
spring.swagger.termsOfServiceUrl=服务条款URL
spring.swagger.contact.name=维护人
spring.swagger.contact.url=维护人URL
spring.swagger.contact.email=维护人email
spring.swagger.base-package=swagger扫描的基础包,默认:全扫描
spring.swagger.base-path=需要处理的基础URL规则,默认:/**
spring.swagger.exclude-path=需要排除的URL规则,默认:空
spring.swagger.host=文档的host信息,默认:空
spring.swagger.globalOperationParameters[0].name=参数名
spring.swagger.globalOperationParameters[0].description=描述信息
spring.swagger.globalOperationParameters[0].modelRef=指定参数类型
spring.swagger.globalOperationParameters[0].parameterType=指定参数存放位置,参考ParamType:(header,query,path,body,form)
spring.swagger.globalOperationParameters[0].required=指定参数是否必传,默认false
#下面分组是
spring.swagger.groups.<name>.basePackage=swagger扫描的路径
#比如
spring.swagger.groups.基础信息.basePackage=com.battcn.controller.basic

# 关闭 JSR
spring.swagger.validator-plugin=false
# 全局消息体
spring.swagger.global-response-messages.GET[0].code=400
spring.swagger.global-response-messages.GET[0].message=server response 400
spring.swagger.global-response-messages.POST[0].code=400
spring.swagger.global-response-messages.POST[0].message=server response 400
spring.swagger.global-response-messages.POST[1].code=404
spring.swagger.global-response-messages.POST[1].message=server response 404

yaml

以下为 application.yml 配置示例

spring:
  swagger:
    enabled: true
    title: 标题
    description: 描述信息
    version: 系统版本号
    contact:
      name: 维护者信息
    base-package: swagger扫描的基础包,默认:全扫描(分组情况下此处可不配置)
    #全局参数,比如Token之类的验证信息可以全局话配置
    global-operation-parameters:
    -   description: 'Token信息,必填项'
        modelRef: 'string'
        name: 'Authorization'
        parameter-type: 'header'
        required: true
    groups:
      basic-group:
        base-package: com.battcn.controller.basic
      system-group:
        base-package: com.battcn.controller.system

贡献者

Levin:1837307557@qq.com

_Rock:995269937@qq.com

常用注解说明

  • @Api:一般用于Controller中,用于接口分组。(如:@Api(value = "用户接口", description = "用户接口", tags = {"1.1.0"})

  • @ApiOperation:接口说明,用于api方法上。(如: @ApiOperation(value = "用户查询", notes = "根据ID查询用户信息")

  • @ApiImplicitParam:参数说明,适用于只有一个请求参数,主要参数

  • @ApiImplicitParams:多个参数说明,主要参数参考上面@ApiImplicitParam

  • @ApiModel:实体类说明

  • @ApiModelProperty:实体参数说明

如何参与

有兴趣的可以联系本人(Pull Request),参与进来一起开发,美化UI与配置项一起完善

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

swagger-spring-boot-starter 是一款建立在swagger基础之上的工具包,利用SpringBoot自动装配的特性,简化了传统swagger的繁琐配置 展开 收起
Java
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/liwenj/spring-boot-starter-swagger.git
git@gitee.com:liwenj/spring-boot-starter-swagger.git
liwenj
spring-boot-starter-swagger
swagger-spring-boot
master

搜索帮助