springboot整合swagger

第一步:添加依赖

在pom文件中添加下面的依赖

<!--整合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>

<!--使用RestController时使用-->
<!--整合Swagger时使用-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

第二步:配置Swagger

新建一个swagger配置文件,写入下面内容

import springfox.documentation.service.Contact;

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .pathMapping("/")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.slm.tools.project.controller"))
                .paths(PathSelectors.any())
                .build().apiInfo(new ApiInfoBuilder()
                        .title("springboot整合Swagger")//swagger接口文档标题
                        .description("SpringBoot项目整合Swagger,代替手动维护的接口文档")//swagger接口文档描述
                        .version("1.0")//swagger接口文档版本
                        .contact(new Contact("Sun Luming","https://blog.csdn.net/sun_luming","test@test.com"))//文档作者信息
                        .license("Sun Luming")//文档许可证
                        .licenseUrl("https://blog.csdn.net/sun_luming")//文档许可证连接
                        .build());
    }
}

上面内容中的apis(RequestHandlerSelectors.basePackage(“com.slm.tools.project.controller”))部分是配置swagger要扫描的包,也就是你的项目的controller所在包

第三步:写一个测试Controller

@Api(tags = "测试swagger的Controller")
@RestController
@RequestMapping("test")
public class TestController {

    @GetMapping("test1")
    @ApiOperation("一个参数的请求")
    @ApiImplicitParam(name = "userId",value = "用户id",defaultValue = "1",required = true)
    public Map<String,Object> getTest(@RequestParam Integer userId){
        Map<String,Object> result = new HashMap<>();
        result.put("test","test");
        result.put("id",userId);
        result.put("msg","一个参数的请求");
        return result;
    }

    @GetMapping("test2")
    @ApiOperation("多个参数的请求")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "userId",value = "用户id",defaultValue = "16",required = true),
            @ApiImplicitParam(name = "name",value = "用户名",defaultValue = "张三")
    })
    public Map<String,Object> getTest(@RequestParam(required = true) Integer userId, @RequestParam String name){
        Map<String,Object> result = new HashMap<>();
        result.put("id",userId);
        result.put("name",name);
        result.put("msg","多个参数的请求");
        return result;
    }

}

swagger注解学习了解

在这里插入图片描述

@Api(tags = "测试swagger的Controller")

@Api用来描述概括一个controller的作用(如上图①)

@ApiOperation("一个参数的GET请求")

@ApiOperation用来描述一个接口方法的作用(如上图②)

@ApiImplicitParam(name = "id",value = "用户id",defaultValue = "1",required = true)

@ApiImplicitParam用来描述方法的一个参数,描述内容包括参数名、参数中文描述、参数默认值和参数是否必填(如上图③)

注意:
第一点:

@ApiImplicitParam注解内的defaultValue属性很好用,defaultValue属性用来给参数设置默认值,在调试参数比较多的接口时每次都要输入很多参数,这就很痛苦,但是当使用defaultValue设置默认值后,每次调试接口会自动填充这些参数,这就很舒服了

第二点:

@ApiImplicitParam注解内的required属性是用来描述参数是否必填(如上图④),但是这个必填只限于使用swagger调试接口,如果要真正指定这个参数是必填项,还要加上一个注解@RequestParam(required = true)(如上图⑥)

@ApiImplicitParams({
            @ApiImplicitParam(name = "id",value = "用户id",defaultValue = "16",required = true),
            @ApiImplicitParam(name = "name",value = "用户名",defaultValue = "张三")
})

@ApiImplicitParams注解用来包裹多个@ApiImplicitParam注解,也就是当接口有多个参数时要使用@ApiImplicitParams注解把这多个@ApiImplicitParam参数注解包裹起来使用。

第四步:启动项目,访问下面连接:

http://localhost:8080/swagger-ui.html

在这里插入图片描述

第五步:调用接口

在接口列表点击接口的地址展开接口:
在这里插入图片描述
点击“Try it out”按钮,根据提示输入参数:
在这里插入图片描述

在这里插入图片描述
参数输入后点击Execute按钮,可以看到Response body中已经有返回数据了。

目前就学习到这么多,后续有收获再补充。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值