• 六、springboot集成Swagger2


    1.Swagger简介

      Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。

    2.Spring Boot 集成Swagger

    一、修改pom.xml,添加maven依赖

            <!-- Swagger -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.6.1</version>
            </dependency>
    
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.6.1</version>
            </dependency>

    二、添加Swagger配置类

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
        
        @Bean
        public Docket createRestApi() {        
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("指定扫描的包路径"))
                    .paths(PathSelectors.any())                  
                    .build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("大标题")
                    .description("description")
                    .termsOfServiceUrl("http://路径.com")
                    .contact(new Contact("name", "http://name.com", "name@name.com"))//作者
                    .version("1.0")//版本
                    .build();
        }
        
        @SuppressWarnings("unused")
        private Predicate<String> petstorePaths() {
            return or(
                    regex("/user.*"),
                    regex("/cities.*")
            );
        }
    
    }

      @Configuration让Spring来加载该类配置

      @EnableSwagger2启用Swagger2

      通过createRestApi函数创建Docket的Bean之后,apiInfo()用来创建该Api的基本信息(这些基本信息会展现在文档页面中)。select()函数返回一个ApiSelectorBuilder实例用来控制哪些接口暴露给Swagger来展现,本例采用指定扫描的包路径来定义,Swagger会扫描该包下所有Controller定义的API,并产生文档内容(除了被@ApiIgnore指定的请求)

    3.添加文档内容

      在API上做一些声明:在Controller类中添加相关的swagger注解。但是有一个要求,这个Controller类一定要让上一步配置类的@ComponentScan扫描到

      swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。

      swagger注释API详细说明

    作用范围API使用位置
    对象属性 @ApiModelProperty 用在出入参数对象的字段上
    协议集描述 @Api 用于controller类上
    协议描述 @ApiOperation 用在controller的方法上
    Response集 @ApiResponses 用在controller的方法上
    Response @ApiResponse 用在 @ApiResponses里边
    非对象参数集 @ApiImplicitParams 用在controller的方法上
    非对象参数描述 @ApiImplicitParam 用在@ApiImplicitParams的方法里边
    描述返回对象的意义 @ApiModel 用在返回对象类上
    @Api:修饰整个类,描述Controller的作用
    @ApiOperation:描述一个类的一个方法,或者说一个接口
    @ApiParam:单个参数描述
    @ApiModel:用对象来接收参数
    @ApiProperty:用对象接收参数时,描述对象的一个字段
    @ApiResponse:HTTP响应其中1个描述
    @ApiResponses:HTTP响应整体描述
    @ApiIgnore:使用该注解忽略这个API
    @ApiError :发生错误返回的信息
    @ApiParamImplicitL:一个请求参数
    @ApiParamsImplicit 多个请求参数
    @Api(tags={"积分接口"})
    @RequestMapping("credit")
    @RestController
    public class CreidtController {
    
        @Autowired
        private CreditService creditService;
        
        @Autowired  
        private ConsulClient consulClient;
            
        private static Logger log = LoggerFactory.getLogger(CreidtController.class);
    
        /**
         * @param id
         * @return User
         */
        @ApiOperation(value = "根据用户ID获取可用积分", notes="包含各种类型积分")   
        @ApiImplicitParam(name = "id", value = "编号", required = true, paramType="path")
        @GetMapping("{id}")
        public Credit getuser(@PathVariable String id) {
            return null;
        }      
            
    }

      完成上述代码添加上,启动Spring Boot程序,访问:http://localhost:8080/swagger-ui.html

      就能看到前文所展示的RESTful API的页面。我们可以再点开具体的API请求,以POST类型的/users请求为例,可找到上述代码中我们配置的Notes信息以及参数user的描述信息。

    4.API文档访问与调试

      在上图请求的页面中,我们看到user的Value是个输入框?是的,Swagger除了查看接口功能外,还提供了调试测试功能,我们可以点击上图中右侧的Model Schema(黄色区域:它指明了User的数据结构),此时Value中就有了user对象的模板,我们只需要稍适修改,点击下方“Try it out!”按钮,即可完成了一次请求调用!

    此时,你也可以通过几个GET请求来验证之前的POST请求是否正确。

    参考:https://blog.csdn.net/Amethyst128/article/details/72877660
       swagger.io
  • 相关阅读:
    GateWay配置使用
    Hystrix&Dashboard配置使用
    Ribbon&OpenFeign配置使用
    服务端&客户端注册进Eureka
    Eureka单机&集群配置
    通过淘宝IP库获取定位
    php 红包瓜分算法(实用)
    换博客力!
    2021 上学期做题记录
    计数 DP 学习笔记
  • 原文地址:https://www.cnblogs.com/soul-wonder/p/8969192.html
Copyright © 2020-2023  润新知