• Spring boot 2.1.0 -- swagger2 整合


    依赖版本信息
    Spring boot 2.1.0.RELEASE
    swagger2 2.7.0
    1. mvn 配置  pom.xml 包引入
     1 <!--swagger2依赖-->
     2 <dependency>
     3 <groupId>io.springfox</groupId>
     4 <artifactId>springfox-swagger2</artifactId>
     5 <version>2.7.0</version>
     6 </dependency>
     7 <dependency>
     8 <groupId>io.springfox</groupId>
     9 <artifactId>springfox-swagger-ui</artifactId>
    10 <version>2.7.0</version>
    11 </dependency>
    12 <!--swagger2美化插件依赖-->
    13 <dependency>
    14 <groupId>com.github.xiaoymin</groupId>
    15 <artifactId>swagger-bootstrap-ui</artifactId>
    16 <version>1.6</version>
    17 </dependency>
    2.配置Config
    在Application.java同级目录创建 Swagger2Config.java 内容
     
    package com.muyuer.springdemo;
    
    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.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    @Configuration
    @EnableSwagger2
    public class Swagger2Config {
    
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.muyuer.springdemo.controller"))
                    .paths(PathSelectors.any())
                    .build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("XX系统_接口文档")
                    .description("XX系统,具体包括XXX,XXX模块...")
                    .contact(new springfox.documentation.service.Contact("muyuer",  "http://www.615000.com", "182443947@qq.com"))
                    .version("版本号:1.0")
                    .build();
        }
    }

    3.Swagger注解
    swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。
    @Api:修饰整个类,描述Controller的作用
    @ApiOperation:描述一个类的一个方法,或者说一个接口
    @ApiParam:单个参数描述
    @ApiModel:用对象来接收参数
    @ApiProperty:用对象接收参数时,描述对象的一个字段
    @ApiResponse:HTTP响应其中1个描述
    @ApiResponses:HTTP响应整体描述
    @ApiIgnore:使用该注解忽略这个API
    @ApiError :发生错误返回的信息
    @ApiImplicitParam:一个请求参数
    @ApiImplicitParams:多个请求参数

    import io.swagger.annotations.ApiImplicitParam;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @author  by muyuer
     * @date : 2018-11-30 14:22
     */
    @Api("接口用途 XX接口")
    @RestController
    public class HelloController {
    
        @ApiOperation("描述方法用途 XX方法")
        @GetMapping("/hello")
        public String say(){
            return "Hello SpringBoot!";
        }
    
        @ApiOperation("描述方法用途 xx方法")
        @ApiImplicitParam(name = "name", value = "XX参数", dataType = "String")
        @GetMapping("/hello2")
        public String say2(String name){
            return name + ": Hello SpringBoot!";
        }
    }

    4.遇到的问题

    开始使用其它版本swagger出现过以下错误 
    {"code":404,"message":"接口 [/swagger-ui.html] 不存在"}
    网上搭建答案是
    添加 WebMvcConfigurer.java内容如下 
    //swagger2配置
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
     
    registry.addResourceHandler("swagger-ui.html")
    .addResourceLocations("classpath:/META-INF/resources/");
     
    registry.addResourceHandler("/webjars/**")
    .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

    自己实际测试添加了这些代码并未生效

    重新建了项目引用上面版本的Spring boot 2.1.0.RELEASE swagger2 2.7.0包后即成功了。

  • 相关阅读:
    离线获取docker镜像(docker save vs load)&docker export vs import& docker commit
    深入分析JavaWeb的中文编码问题
    python中Django的基本使用
    element+springboot实现简单的商品管理
    springboot+thymeleaf自定义标签
    springboot整合shiro
    linux的namespace、docker网络模式
    Docker Compose、Swarm 集群管理
    iOS Share Extension 自定义分享界面
    Mixin Messenger 源码解读 1 — — WCDB Swift
  • 原文地址:https://www.cnblogs.com/DevMuYuer/p/10068950.html
Copyright © 2020-2023  润新知