SpringBoot集成Swagger2

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单.

添加库

        <!--swagger集成,接口测试-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${springfox.version}</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${springfox.version}</version>
        </dependency>

配置文件

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    //设置是否生成文档
    @Value("${swagger.show}")
    private boolean swaggerShow;

    /**
     * 可以定义多个组,比如本类中定义把test和demo区分开了 (访问页面就可以看到效果了)
     */
    @Bean
    public Docket testApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .enable(this.swaggerShow)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.api"))
                .paths(PathSelectors.any()).build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("API")
                .description("××管理系统api")
                .termsOfServiceUrl("http://example.eric.com")
                .contact("eric")
                .version("1.0")
                .build();
    }
}

代码注解

  • 接口注解
package com.wangheart.boot.user;

import com.wangheart.boot.entity.LoginRequest;
import com.wangheart.boot.entity.Result;
import com.wangheart.boot.entity.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

/**
 * Author : eric
 * CreateDate : 2017/5/5  18:47
 * Email : ericli_wang@163.com
 * Version : 2.0
 * Desc :
 * Modified :
 */
@RestController
@RequestMapping("/user")
@Api(value = "用户", tags = "用户接口")
public class UserController {
    private final static Logger logger = LoggerFactory.getLogger(UserController.class);

    @ApiOperation(value = "登录")
    @RequestMapping(value = "login", method = RequestMethod.POST)
    public Result login(@RequestBody LoginRequest loginRequest) {
        Result result = new Result<>();
        result.setDatas(new User());
        return result;
    }

    @ApiOperation(value = "查询用户详情")
    @ApiImplicitParam(name = "id", value = "用户id", paramType = "path", dataType = "string", required = true)
    @RequestMapping(value = "info/{id}", method = RequestMethod.GET)
    public Result<User> getUserInfo(@PathVariable String id) {
        Result<User> result = new Result<>();
        result.setDatas(new User());
        return result;
    }

    @ApiOperation(value = "条件查询用户")
    @RequestMapping(value = "list", method = RequestMethod.GET)
    @ApiImplicitParams({
            @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "form", dataType = "string", required = true),
            @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "form", dataType = "string", required = true),
            @ApiImplicitParam(name = "pageSize", value = "每页数量", paramType = "form", dataType = "int", required = true),
            @ApiImplicitParam(name = "pageNum", value = "页码", paramType = "form", dataType = "int", required = true)})
    public Result<List<User>> getUserList(@RequestParam String startTime,
                                          @RequestParam String endTime,
                                          @RequestParam int pageSize,
                                          @RequestParam int pageNum) {
        Result<List<User>> result = new Result<>();
        List<User> list = new ArrayList<>();
        list.add(new User());
        result.setDatas(list);
        return result;
    }
}
  • 实体注解 @Data public class User{ @ApiModelProperty(value = "用户id", example = "11111") private String id; @ApiModelProperty(value = "登录账号", example = "13249861111") private String account; @JSONField(serialize = false) private String password; @ApiModelProperty(value = "昵称", example = "张三") private String nickName; }

swagger1.png

swagger2.png

swagger3.png

swagger4.png

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏zhisheng

渣渣菜鸡的 ElasticSearch 源码解析 —— 环境搭建

去 https://www.elastic.co/downloads/past-releases 这里找到 ElasticSearch 6.3.2 版本,下载后...

28020
来自专栏颇忒脱的技术博客

Spring MVC异步处理简介

本文讲到的所有特性皆是基于Servlet 3.0 Async Processing的,不是基于Servlet 3.1 Async IO的。

38330
来自专栏张善友的专栏

MS 的IOC容器(ObjectBuilder)?

MS 的 Net Framework 2.0的Enterprise Library - November 2005 CTP 和Composite User I...

20870
来自专栏JAVA后端开发

spring boot2集成activiti6的问题记录

经查,是因为我用mybatis plus,要求用mybatis3.4.6,而activiti用的是mybatis3.4.2,两边有冲突,直接排除activiti...

1.4K30
来自专栏生信技能树

(15)基因组各种版本对应关系-生信菜鸟团博客2周年精选文章集

这是我的成名作: 首先是NCBI对应UCSC,对应ENSEMBL数据库: GRCh36 (hg18): ENSEMBL release_52. GRCh37 (...

51480
来自专栏三杯水

Codis3.2集群HA高可用方案

Sentinel需要使用原生的Redis-server,版本要等于或高于Codis3.2里面的3.2.8版本, 这里是在Redis3.2.9的下配置测试的,另外...

11020
来自专栏名山丶深处

springboot集成redis(mybatis、分布式session)

23080
来自专栏编程坑太多

springboot(13)国际化

19740
来自专栏张善友的专栏

Windows Server AppFabric Beta 2 已经发布

Windows Server AppFabric Beta 2是一个包含完全功能的AppFabric版本(This build represents our “...

18950
来自专栏jeremy的技术点滴

Spring Boot学习备忘

33240

扫码关注云+社区

领取腾讯云代金券