springboot 集成swagger2(转)

原文:https://www.cnblogs.com/kingsonfu/p/11519728.html

使用Swagger 可以动态生成Api接口文档,在项目开发过程中可以帮助前端开发同事减少和后端同事的沟通成本,而是直接参照生成的API接口文档进行开发,提高了开发效率。这里以springboot(版本2.1.4.RELEASE)集成swagger2并以简单测试用例延时集成效果。

1. Swagger配置及使用

pom依赖加入swagger

io.springfox
    springfox-swagger2
    2.9.2

    io.springfox
    springfox-swagger-ui
    2.9.2

添加swagger配置类,主要用于配置生成api的相关信息

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                // api基础信息
                .apiInfo(apiInfo())
                // 控制开启或关闭swagger
                .enable(true)
                // 选择那些路径和api会生成document
                .select()
                // 扫描展示api的路径包
                .apis(RequestHandlerSelectors.basePackage("com.example.springbootswagger.controller"))
                // 对所有路径进行监控
                .paths(PathSelectors.any())
                // 构建
                .build();
    }

    /**
     * @descripiton:
     * @author: kinson
     * @date: 2019/9/10 23:33
     * @param
     * @exception:
     * @modifier:
     * @return:springfox.documentation.service.ApiInfo
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                // api名称
                .title("SwaggerUI APIS")
                // api 描述
                .description("Simple Demo About SwaggerUI APIS")
                // api 版本
                .version("1.0")
                // 构建
                .build();
    }
}

这里的@EnableSwagger2用于让激活swagger,也可以加载启动类上。

添加测试url

@RestController
@Api(tags = "测试demo")
@RequestMapping(value = "swagger")
public class UserController {

    @ApiOperation(value = "hello", notes = "hello测试api")
    @GetMapping(value = "hello")
    public String hello() {
        return "hello";
    }

    @ApiOperation(value = "add", notes = "路径变量测试")
    @ApiImplicitParam(name = "swaggerId",value = "测试参数id",required = true, dataType = "Integer", paramType="path")
    @PostMapping(value = "add/{swaggerId}")
    public String add(@PathVariable Integer swaggerId) {
        Assert.notNull(swaggerId, "swaggerId为空");
        return swaggerId.toString();
    }

    @ApiOperation(value = "update",notes = "多路径参数变量测试")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "swaggerId",value = "测试参数id",required = true, dataType = "Integer", paramType="path"),
            @ApiImplicitParam(name = "name",value = "测试参数名称",required = true, dataType = "String", paramType="path")})
    @PutMapping(value = "/update/{swaggerId}/{name}")
    public String update(@PathVariable Integer swaggerId,@PathVariable String name) {
        return String.valueOf(swaggerId + name);
    }

    @ApiOperation(value = "addUser",notes = "对象添加测试")
    @ApiImplicitParam(name = "user",value = "待添加用户信息",required = true, dataType = "User", paramType="body")
    @ApiResponse(code = 200, message = "添加成功")
    @PostMapping(value = "/addUser")
    public String addUser(@RequestBody User user){

        return user.getName();
    }

}

上述工作加完后就可以启动项目查看效果,打开浏览器访问http://127.0.0.1:8080/swagger-ui.html,如下图则表示集成成功

springboot 集成swagger2(转)

2. Swagger各种注解

  • @Api:用在类上,标志此类是Swagger资源 value:接口说明 tags:接口说明,可以在页面中显示。可以配置多个,当配置多个的时候,在页面中会显示多个接口的信息
  • @ApiOperation:用在方法上,描述方法的作用
  • @ApiImplicitParams:包装器,包含多个ApiImplicitParam对象列表
  • @ApiImplicitParam:定义在@ApiImplicitParams注解中,定义单个参数详细信息,如下:

○ paramType:参数放在哪个地方
§ header–>请求参数的获取:@RequestHeader
§ query–>请求参数的获取:@RequestParam
§ path(用于restful接口)–>请求参数的获取:@PathVariable
§ body(以流的形式提交 仅支持POST)
§ form(以form表单的形式提交 仅支持POST)
○ name:参数名
○ dataType:参数的数据类型 只作为标志说明,并没有实际验证
§ Long
§ String
○ required:参数是否必须传
§ true
§ false
○ value:参数的意义
○ defaultValue:参数的默认值

  • @ApiModel:描述一个Swagger Model的额外信息
  • @ApiModel用在类上,表示对类进行说明,用于实体类中的参数接收说明
  • @ApiModelProperty:在model类的属性添加属性说明
  • @ApiParam:用于Controller中方法的参数说明
  • @ApiResponses:包装器:包含多个ApiResponse对象列表
  • @ApiResponse:定义在@ApiResponses注解中,一般用于描述一个错误的响应信息 。如下:
  • code:错误码,例如400
  • message:信息,例如”请求参数没填好”
  • response:抛出异常的类
  • @Authorization 声明要在资源或操作上使用的授权方案。
  • @AuthorizationScope 描述OAuth2授权范围

Original: https://www.cnblogs.com/ajianbeyourself/p/15570156.html
Author: 奋斗终生
Title: springboot 集成swagger2(转)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/540937/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • k8s-Service网络服务

    Service主要用于提供网络服务,通过Service的定义,能够为客户端应用提供稳定的访问地址(域名或IP地址)和负载均衡功能,以及屏蔽后端Endpoint的变化,是k8s实现微…

    Java 2023年6月8日
    047
  • 一些基本的jar包

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月9日
    084
  • springboot如何配置mybaits-plus

    1 MyBatis-Plus MyBatis-Plus (opens new window)(简称 MP)是一个MyBatis (opens new window)的增强工具,在 …

    Java 2023年5月30日
    0126
  • 现代医院信息化建设策略与实践

    概要: 优化医院服务流程,改善患者就医体验。 支撑门诊医疗服务,提高门诊诊疗水平。 规范急诊业务管理,强化急救治疗能力。 提高医院医疗效率,保障临床医疗质量。 规范护理服务流程,提…

    Java 2023年5月29日
    092
  • Windows安装VNC服务端

    下载VNC服务端 由于服务器在IDC机房,只能使用系统自带远程桌面连接到服务器进行安装VPC服务端 但在安装过程发现,如果是通过远程桌面连接到服务器进行安装,VNC Mirror …

    Java 2023年5月30日
    077
  • Java项目实战——瑞吉外卖Day03

    分类管理业务开发 公共字段自动填充 问题分析 前面我们已经完成了后台系统的员工管理功能开发,在新增员工时需要设置创建时间、创建人、修改时间、修改人等字段,在编辑员工时需要设置修改时…

    Java 2023年5月29日
    071
  • Elasticsearch和Solr的区别

    1、基于Lucene开发 java;gutter:true; 他们底层都是基于Lucene开发,使用了Lucene的倒排索引实现的</p> <pre>&lt…

    Java 2023年6月13日
    074
  • 四大函数式接口

    四大函数式接口 Fuction 函数型接口,有一个输入参数,有一个输出参数 函数型接口:输入一个参数,输出输入的参数 //Function 函数型接口 public class D…

    Java 2023年6月5日
    073
  • MyBatis的基本使用

    快速入门 Mybatis的官网:https://mybatis.org/mybatis-3/ MyBatis的开发步骤 添加MyBatis的坐标 UTF-8 UTF-8 1.8 1…

    Java 2023年6月5日
    0107
  • 邻接矩阵有向图(三)之 Java详解

    邻接矩阵有向图是指通过邻接矩阵表示的有向图。 上面的图G2包含了”A,B,C,D,E,F,G”共7个顶点,而且包含了” 上图右边的矩阵是G2在内…

    Java 2023年5月29日
    069
  • Java动态代理

    在我们日常开发中,代理模式是一个非常常见的模式。动态代理时jdk中自带的,可以非常方便的在原有的功能上添加一些我们自己的功能。 什么是代理 就是为其他对象提供一个代理以控制被代理对…

    Java 2023年6月7日
    0123
  • Spring与Web环境集成

    Spring与Web环境集成 1. ApplicationContext应用上下文获取方式 应用上下文对象是通过 new ClassPathXmlApplicationContex…

    Java 2023年6月5日
    0106
  • java获取指定开始时间与结束时间之间的所有日期

    import java.text.SimpleDateFormat; import java.util.Calendar; public class TimerTest {publ…

    Java 2023年5月29日
    067
  • Django登陆以后重定向到请求登陆的页面

    登陆和注销操作在网页编程上很常见,这两个操作经常需要在操作成功以后转入发出请求的页面。 比如用户正在浏览一篇文章,发现下载该文章的附件需要登录才能进行,这时候点击登陆链接转入登陆页…

    Java 2023年5月29日
    072
  • Spring中的@Lazy注解简析_阻塞队列被异步消费怎么保持顺序呢?_如何优雅的停止一个线程

    @Lazy 的属性 Spring IoC (ApplicationContext) 容器一般都会在启动的时候实例化所有单实例 bean 。如果我们想要Spring 在启动的时候延迟…

    Java 2023年5月30日
    081
  • MapReduce报错Exception in thread “main” java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio

    在使用MapReduce的小测试的时候,Driver类启动,或报下面的错误共有两种解决方案 java;gutter:true; log4j:WARN No appenders co…

    Java 2023年6月9日
    0123
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球