SpringBoot整合Swagger

SpringBoot整合Swagger

1、下载swagger相关依赖
maven仓库搜索springfox
在这里插入图片描述
我这里使用的springboot版本是2.7.13
在这里插入图片描述

swagger版本是2.9.2,因为Springfox使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.7.X使用的是PathPatternMatcher,版本不适配

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException

问题解决:
配置中加入

spring.mvc.pathmatch.matching-strategy=ant_path_matcher
<!-- swagger2 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<!-- swagger-ui -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

导入这两个个依赖

2、配置Swagger的Config

@Configuration
@EnableSwagger2  //开启Swagger
public class SwaggerConfig {
}

在这里插入图片描述
访问http://localhost:6001/swagger-ui.html (配置文件中指定端口为6001)
在这里插入图片描述

3、配置Docket

	@Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .enable(true)//是否开启Swagger
                .groupName("km") //设置分组为km
                .apiInfo(this.apiInfo())
                .select()//做出筛选
                //RequestHandlerSelectors配置要扫描接口的方式
                //basePackage 指定要扫描的包路径
                .apis(RequestHandlerSelectors.basePackage("com.ckm.docker_boot.controller"))
                //过滤路径
                //.paths(PathSelectors.ant(""))
                .build();
    }

    private ApiInfo apiInfo(){
        return new ApiInfo(
                "ChangKM API",
                "Chang的开发API文档",
                "1.0",
                "https://blog.csdn.net/weixin_47971118?spm=1011.2415.3001.5343",
                 new Contact("常可蒙", "https://blog.csdn.net/weixin_47971118?spm=1011.2415.3001.5343", "Chang000614@163.com"),//作者信息
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                 new ArrayList());
    }

重新启动
在这里插入图片描述

error被过滤掉,显示属于km的分组的的一些配置信息

4、设置多个分组(不同开发人员有自己的分组)

    @Bean
    public Docket docket1(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("Group1");
    }
    @Bean
    public Docket docket2(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("Group2");
    }
    @Bean
    public Docket docket3(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("Group3");
    }

在这里插入图片描述

重启之后
在这里插入图片描述
5、当扫描的文件中接口的返回值中存在实体类时,就可以发现Swagger中Models存在该实体类,若不存在返回实体类,则不显示Models

在这里插入图片描述在这里插入图片描述

6、接口信息描述

@Api(tags = “测试控制器”) 注解放在类上,用于描述类
@ApiOperation(“查询全部用户信息”) 注解放在接口上,用于描述接口
@ApiParam(value = “姓名”)注解放在参数前,用于描述参数

@Api(tags = "测试控制器")
@RestController
public class DockerBootController {
    @Value("${server.port}")
    private String port;
    @Autowired
    private UserService userService;

    @ApiOperation(value = "查询全部用户信息")
    @GetMapping("/docker/selectAll")
    public List<User> selectAll(){
        List<User> userList = userService.selectAll();
        for (User u :userList) {
            System.out.println(u.getUsername());
        }
        return userList;
    }

    @ApiOperation(value = "测试")
    @PostMapping("/test")
    public String selectName( @RequestBody @ApiParam(value = "姓名")String  name){
        return "哈哈哈哈哈"+name;
    }


    @ApiOperation(value = "输出hello Docker")
    @GetMapping("/docker/hello")
    public String helloDocker(){
        long l = System.currentTimeMillis();
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        String format = simpleDateFormat.format(l);
        return "hello Docker"+"\t"+format;
    }

    @ApiOperation(value = "获取微服务端口")
    @GetMapping("/docker/getPort")
    public String getPort(){
        return "服务端口:"+port;
    }

    @ApiOperation(value = "添加用户")
    @PostMapping("/dokcer/addUser")
    public String addUser(){
        User user = new User();
        user.setPassword("123456");
        Integer integer = userService.addUser(user);
        return "添加成功";
    }
}

在这里插入图片描述

7、测试
输入 我是笑笑
正常输出
在这里插入图片描述
在这里插入图片描述

Swagger优势:
1、可以给接口添加注释信息,便于理解
2、接口文档实时更新(可以直接访问这个网址查看提供的api信息啊,实时更新)
2、可以在线测试

注意点:
代码打包发布前一定要关闭Swagger!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值