SpringBoot-swagger


13. SpringBoot-swagger

13.1 導入相關依賴

<dependencies>

    <!-- springfox-boot-starter
        配置類上使用的開啟注解為:@EnableOpenApi
        訪問路徑:http://localhost:8080/swagger-ui/index.html
    -->
    <!--<dependency>-->
    <!--<groupId>io.springfox</groupId>-->
    <!--<artifactId>springfox-boot-starter</artifactId>-->
    <!--<version>3.0.0</version>-->
    <!--</dependency>-->

    <!-- springfox-swagger-ui springfox-swagger2
        springboot2.6.0版本不兼容 這里使用的是SpringBoot2.5.6版本
        使用的注解為:@EnableSwagger2
        訪問路徑:http://localhost:8080/swagger-ui.html
     -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>
    <!-- springfox-swagger2 -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

13.2 編寫Swagger配置類

文件路徑:com--dzj-config--SwaggerConfig.java

@Configuration
@EnableSwagger2  //開啟Swagger2
public class SwaggerConfig {
    // 配置swagger Docket的bean實例,可以配置多個
    @Bean
    public Docket docket(Environment environment) {

        //設置要顯示的swagger環境
        Profiles profiles = Profiles.of("dev", "test");
        //通過environment.acceptsProfiles()判斷當前環境是否處於設定的環境中
        boolean flag = environment.acceptsProfiles(profiles);
        System.out.println("當前測試環境--->" + flag);
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(flag) //是否啟動Swagger,默認為true
                .groupName("dengzj")
                .select()
                /*
                    RequestHandlerSelectors,配置要掃描接口的方式
                    basePackage("com.dzj.controller"):指定要掃描的包
                    any():掃描所有
                    none():不掃描
                    withClassAnnotation(GetMapping.class):掃描類上的注解
                    withMethodAnnotation(GetMapping.class):掃描方法上的注解
                 */
                .apis(RequestHandlerSelectors.basePackage("com.dzj.controller"))
                //paths(PathSelectors.ant("/dzj/**")) 過濾請求的路徑
                //.paths(PathSelectors.ant("/hello/**"))
                .build();
    }

    //配置Swagger信息,apiInfo
    private ApiInfo apiInfo() {
        Contact contact = new Contact("dengzj", "https://www.cnblogs.com/aadzj/", "aadzj@qq.com");
        return new ApiInfo(
                "Dengzj的SwaggerApi文檔",
                "認真卻不慫",
                "v1.0",
                "https://www.cnblogs.com/aadzj/",
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }
    @Bean
    public Docket docket1() {
        return new Docket(DocumentationType.SWAGGER_2).groupName("A");
    }

    @Bean
    public Docket docket2() {
        return new Docket(DocumentationType.SWAGGER_2).groupName("B");
    }

    @Bean
    public Docket docket3() {
        return new Docket(DocumentationType.SWAGGER_2).groupName("C");
    }
}

13.3 編寫實體類

文件位置:com--dzj--pojo--User.java

@ApiModel("用戶實體類")  //注釋
public class User {

    @ApiModelProperty("用戶名") //注釋
    public String username;
    @ApiModelProperty("密碼")  //注釋
    public String password;

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

13.4 編寫測試接口

文件位置:com--dzj--controller-HelloController.java

@Api(tags = "hello控制類")  //注釋類名
@RestController
public class HelloController {

    @ApiOperation("hello接口")  //注釋接口名
    @GetMapping(value = "/testHello")
    public String testHello() {
        return "hello";
    }

    // 只要我們接口中的返回值有實體類,它就會被掃描到swagger中
    @ApiOperation("掃描實體類測試接口")
    @PostMapping("/testUser")
    public User testUser() {
        return new User();
    }

    @ApiOperation("測試testRestful接口")
    @GetMapping("/testRestful/{username}")
    public String testRestful(@ApiParam("用戶名") @PathVariable("username") String username) {
        return "username:" + username;
    }

    @ApiOperation("測試testPost接口")
    @PostMapping("/testPost")
    public User testPost(User user) {
        return user;
    }
}

13.5 編寫配置文件

  • application.properties

    spring.profiles.active=dev
    
  • application-dev.properties

  • application-pro.properties

  • application-test.properties

13.6 訪問測試

訪問路徑:http://localhost:8080/swagger-ui.html

接口以及實體類信息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM