SpringBoot整合Swagger2

SpringBoot整合Swagger2

1. 创建工程,引入依赖

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.7.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.7.0</version>
</dependency>

注意:在使用3.0.0版本,配置完成后swagger-ui.html打不开;使用2.10.5版本,找不到@EnableSwagger注解。所以在配置完成后,如果有问题,建议更换版本尝试。

2. Swagger2配置

package com.example.demo1.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class Swagger2Config {

    /**
     * 创建一个Bean,相当于开启swagger的一个文档分组
     * @return
     */
    @Bean
    public Docket webApiConfig() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("webApi")
                .apiInfo(webApiInfo())
                .select()
            	// 以 /web 开头的path才可以
                .paths(PathSelectors.regex("/web/.*"))
                .build();
    }

    private ApiInfo webApiInfo () {
        return new ApiInfoBuilder()
                .title("Web Api")
                .description("这是Web Api")
                .version("1.0")
                .contact(new Contact("Damon", "XXX", "XXX"))
                .build();
    }
}

启动项目,输入http://localhost:8080/swagger-ui.html,能够看到如下页面,说明已经配置成功了。
在这里插入图片描述

3. 创建API

package com.example.demo1.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

@RestController
@Api(tags = "Web 相关接口")
@RequestMapping("/web")
public class TestController {

    @RequestMapping(path = "/{id}", method = RequestMethod.GET)
    @ApiOperation("测试接口")
    @ApiImplicitParam(name = "id", value = "用户id", required = true, paramType = "query")
    public String testApi(String id) {
        return "ok!";
    }

    @PostMapping("/postApi")
    @ApiOperation("测试 post Api")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "用户id", required = true),
            @ApiImplicitParam(name = "name", value = "用户name", required = true)
    })
    public String postApi(String id, @RequestParam(required = true) String name) {
        return "ok!";
    }
}

在这里插入图片描述

4. 参数解析

  1. @Api注解可以用来标记当前Controller的功能。

  2. @ApiOperation注解用来标记一个方法的作用。

  3. @ApiImplicitParam注解用来描述一个参数,可以配置参数的中文含义。

  4. 如果有多个参数,则需要使用多个@ApiImplicitParam注解来描述,多个@ApiImplicitParam注解需要放在一个@ApiImplicitParams注解中。

  5. @ApiImplicitParam注解中虽然可以指定参数是必填的,但是却不能代替@RequestParam(required = true),前者的必填只是在Swagger2框架内必填,抛弃了Swagger2,这个限制就没用了,所以假如开发者需要指定一个参数必填,@RequestParam(required = true)注解还是不能省略。

  6. 如果参数是一个对象,对于参数的描述也可以放在实体类中。例如:

    @ApiModel
    public class User {
        @ApiModelProperty(value = "用户id")
        private Integer id;
        @ApiModelProperty(value = "用户名")
        private String username;
        @ApiModelProperty(value = "用户地址")
        private String address;
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值