zoukankan      html  css  js  c++  java
  • swagger暴露程序接口文档

    Swagger2是一个帮助用户、团队、企业快速、高效、准确地生产API服务的工具组件,同时还提供了部分测试功能,它的官方网站是https://swagger.io/

    1.引入Maven

            <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>

    2.在应用启动类上添加注解@EnableSwagger2用以开启Swagger2

    @SpringBootApplication
    @EnableSwagger2
    public class DemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    
    }

    实际上在执行完上面两个步骤后,接口就已经被暴露出来了,这时我们启动应用,进入网站http://ip:port/swagger-ui.html,可以看到如下界面

    上图中已经暴露出来了四个不同的处理器,但是其中只有“user-controller”是由我们创建的,同时这些处理器和页面中没有任何的相关提示,让人难以理解每个接口分别对应的功能。下面我们再进行第三步,对暴露出来的接口再进行详细地描述。

    3.添加API文档描述

    定义文档的整体描述,和API文档的规范

    @Configuration
    public class SwaggerConf {
    
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())  //Api信息
                    .select()  //选择器
                    .apis(RequestHandlerSelectors.basePackage("com.springboot.demo.controller"))  //只有在这个包和子包下的接口被生成API文档
                    .paths(PathSelectors.any())  //允许的路径,可以指定post
                    .build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("swagger2 demo")  //文档标题
                    .description("swagger2的测试用例")  //文档说明
                    .contact(new Contact("yxf", "http://yxf.com", "5@qq.com"))  //文档提供者的联系方式
                    .version("1.0")  //版本号
                    .build();
        }
    
    }

    再根据每个接口定义各自的相关描述

        /**
         *  1.@ApiOperation 描述Api的操作,包括请求名(value)和请求描述(notes)
         *  2.@ApiImplicitParams 多个请求参数,里面以数组形式存储了单个的请求参数
         *  3.@ApiImplicitParam 单个请求参数,name参数名,value参数描述,required必要性(针对部分参数可以为空的情况),
         *          example样例格式(默认是“String”,0,true等)
         * @param id
         * @return
         */
        @ApiOperation(value = "删除角色", notes = "根据ID删除角色。")
        @ApiImplicitParams({
                @ApiImplicitParam(name = "id", value = "角色ID", required = true, example = "1")
        })
        @DeleteMapping(value = "role/")
        public String removeRole(long id) {
            System.out.println("删除角色");
            return "删除成功" + id;
        }

    如上编写后,重启应用再进入上面的方法路径“/role/”查看:

    点击“try it out”

    执行后下方会出现操作的相关信息:

  • 相关阅读:
    [Leetcode] Combination Sum II
    [Leetcode] Search in Rotated Sorted Array
    [LeetCode] Number of 1 Bits
    [Jobdu] 题目1373:整数中1出现的次数(从1到n整数中1出现的次数)
    [Jobdu] 题目1377:缓变序列
    [LeetCode] Add Two Numbers
    [LeetCode] Repeated DNA Sequences
    [LeetCode] Reverse Bits
    [Jobdu] 题目1139:最大子矩阵
    [LeetCode] Clone Graph
  • 原文地址:https://www.cnblogs.com/yxth/p/10880631.html
Copyright © 2011-2022 走看看