springboot 集成swagger2

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

1、准备工作

pom依赖加入swagger

<!--swagger-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

配置文件application.properties可以添加swagger.enabled配置控制是否开启

# 控制开启或关闭swagger
swagger.enabled=true

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

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    /**
     * 控制开启或关闭swagger
     */
    @Value("${swagger.enabled}")
    private boolean swaggerEnabled;

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                // api基础信息
                .apiInfo(apiInfo())
                // 控制开启或关闭swagger
                .enable(swaggerEnabled)
                // 选择那些路径和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 SwaggerController {

    @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,如下图则表示集成成功

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授权范围

Github源码参照

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

时间: 2024-10-07 18:19:15

springboot 集成swagger2的相关文章

springboot集成swagger2构建RESTful API文档

在开发过程中,有时候我们需要不停的测试接口,自测,或者交由测试测试接口,我们需要构建一个文档,都是单独写,太麻烦了,现在使用springboot集成swagger2来构建RESTful API文档,可以在访问接口上,直接添加注释 先介绍一下开发环境: jdk版本是1.8 springboot的版本是1.4.1 开发工具为 intellij idea 我们先引入swagger2的jar包,pom文件引入依赖如下: <dependency> <groupId>io.springfox&

springboot 集成swagger2.x 后静态资源报404

package com.bgs360.configuration; import org.springframework.context.EnvironmentAware; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; i

SpringBoot集成Swagger2在线文档

目录 SpringBoot集成Swagger2在线文档 前言 集成SpringBoot 登录接口文档示例 代码 效果 注解说明 总结 SpringBoot集成Swagger2在线文档 前言 不得不说,前后端分离开发的工作方式给我们带来诸多好处, 让前后端攻城狮们顺畅了不少 后端给前端提供良好的接口文档是一种品质,也会减少彼此的沟通成本 这里推荐小伙伴们一款在线.实时更新接口文档工具,Swagger2,解放双手不是梦,谁用谁知道 集成SpringBoot 添加依赖 <dependency> &l

springboot 集成swagger2 404 无法访问

之前按照网上的教程集成swagger2.集成之后访问链接http://localhost:8080/swagger-ui.html返回404. 然后看了一下错误日志,报下面的错误: 2018-06-06 11:26:06.903 WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/swagger-ui.html] in DispatcherServlet

(转) SpringBoot非官方教程 | 第十一篇:springboot集成swagger2,构建优雅的Restful API

swagger,中文"拽"的意思.它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试.另外swagger很容易构建restful风格的api,简单优雅帅气,正如它的名字. 一.引入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <vers

企业级 SpringBoot 教程 (十一)springboot集成swagger2,构建优雅的Restful API

swagger,中文"拽"的意思.它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试.另外swagger很容易构建restful风格的api,简单优雅帅气,正如它的名字. 一.引入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <vers

JAVA springboot微服务b2b2c电子商务系统-springboot集成swagger2,构建优雅的Restful API(十一)

swagger,中文"拽"的意思.它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试.另外swagger很容易构建restful风格的api,简单优雅帅气,正如它的名字. 一.引入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <vers

SpringBoot集成Swagger2实现Restful(类型转换错误解决办法)

pom.xml增加依赖 1 <dependency> 2 <groupId>io.springfox</groupId> 3 <artifactId>springfox-swagger2</artifactId> 4 <version>2.7.0</version> 5 </dependency> 6 <dependency> 7 <groupId>io.springfox</gr

六、springboot集成Swagger2

1.Swagger简介 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步. 2.Spring Boot 集成Swagger 一.修改pom.xml,添加maven依赖 <!-- Swagger --> <dependency> <groupId>io.springfox</gr