1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 手放开 李圣杰
  4. 4 迷人的危险3(翻自 dance flow) FAFA
  5. 5 山楂树之恋 程佳佳
  6. 6 summertime cinnamons / evening cinema
  7. 7 不谓侠(Cover 萧忆情Alex) CRITTY
  8. 8 神武醉相思(翻自 优我女团) 双笙
  9. 9 空山新雨后 音阙诗听 / 锦零
  10. 10 Wonderful U (Demo Version) AGA
  11. 11 广寒宫 丸子呦
  12. 12 陪我看日出 回音哥
  13. 13 春夏秋冬的你 王宇良
  14. 14 世界が终わるまでは… WANDS
  15. 15 多想在平庸的生活拥抱你 隔壁老樊
  16. 16 千禧 徐秉龙
  17. 17 我的一个道姑朋友 双笙
  18. 18 大鱼  (Cover 周深) 双笙
  19. 19 霜雪千年(Cover 洛天依 / 乐正绫) 双笙 / 封茗囧菌
  20. 20 云烟成雨(翻自 房东的猫) 周玥
  21. 21 情深深雨濛濛 杨胖雨
  22. 22 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  23. 23 斑马斑马 房东的猫
  24. 24 See You Again Wiz Khalifa / Charlie Puth
  25. 25 Faded Alan Walker / Iselin Solheim
  26. 26 Natural J.Fla
  27. 27 New Soul Vox Angeli
  28. 28 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  29. 29 像鱼 王贰浪
  30. 30 Bye Bye Bye Lovestoned
  31. 31 Blame You 眠 / Lopu$
  32. 32 Believer J.Fla
  33. 33 书信 戴羽彤
  34. 34 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  35. 35 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  36. 36 慢慢喜欢你 LIve版(翻自 莫文蔚) 戴羽彤
  37. 37 病变(翻自 cubi) 戴羽彤
  38. 38 那女孩对我说 (完整版) Uu
  39. 39 绿色 陈雪凝
  40. 40 月牙湾 LIve版(翻自 F.I.R.) 戴羽彤
夜空中最亮的星(翻自 逃跑计划) - 戴羽彤
00:00 / 04:10

夜空中最亮的星 能否听清

那仰望的人 心底的孤独和叹息

夜空中最亮的星 能否记起

那曾与我同行 消失在风里的身影

我祈祷拥有一颗透明的心灵

和会流泪的眼睛

给我再去相信的勇气

越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请指引我靠近你

夜空中最亮的星 是否知道

那曾与我同行的身影 如今在哪里

夜空中最亮的星 是否在意

是等太阳先升起 还是意外先来临

我宁愿所有痛苦都留在心底

也不愿忘记你的眼睛

哦 给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行 哒~

我祈祷拥有一颗透明的心灵

和会流泪的眼睛 哦

给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行

springboot整合swagger初探指南

SWAGGER是什么?

OpenAPI规范(以前称为Swagger规范)是REST API的API描述格式。OpenAPI文件允许您描述整个API,包括:

  • 可用端点(/users)和操作上的每个端点(GET /usersPOST /users
  • 操作参数每次操作的输入和输出
  • 认证方式
  • 联系信息,许可,使用条款和其他信息。

上面这些是swagger官方给出的说明,简单来说swagger就是接口文档生成工具,可以让你快速地生成接口文档,你需要做的只是在你的接口方法上增加相应的注解。这种文档生成方式,一方面可以让你不需要前端页面就可以测试自己的接口,提高开发效率;另外一方面,当你的接口开发完成后,前端工程师可以根据文档完成自己的开发,减少对接过程中的繁琐沟通,而且支持简单的调试。

我们先来预览下,swagger2长什么样:

如何使用

知道了swagger的优势,那么我们如何使用它呢,下来我们就看看具体的整合流程。这里我们用的是swagger2,项目架构spring boot。

引入依赖文件

和swagger2相关的依赖有两个:springfox-swagger2springfox-swagger-ui

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- Swagger API文档 -->
        <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>

配置swagger2

这里是swaggerd的核心配置,包括标题、描述信息、版本信息等等,更多内容可以去查官方文档:

官方文档

@Configuration
@EnableSwagger2
public class Swagger2Config {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo()) // 接口文档的基本信息
                .select()
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("XXXX项目接口文档")
                .description("该接口用于展示本项目所有相关接口信息")
                .version("1.0")
                .build();
    }

}

配置swagger2静态资源及跨域访问

如果没有静态资源配置,swagger的页面应该是不能能正常展示的。

@Configuration
public class WebConfig implements WebMvcConfigurer {

    /**
     *  配置swagger静态资源
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("static/**").addResourceLocations("/static/");
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
    }

    /**
     * 跨域支持配置
     * @param registry
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**").allowCredentials(true).allowedOrigins("*").allowedMethods("GET", "PUT", "DELETE", "POST", "OPTIONS").maxAge(3600);
    }
}

controller增加swagger注解

controller也就是我们的接口才是swagger真正要发挥的地方,在接口上增加swagger相应的注解,会让你的接口文档更丰富:

  • @Api:这个注解用在controller上,作用不大,经过测试,就算不加这个注解,文档依然正常,唯一的作用是增加接口的描述信息;description就是接口的描述信息,value属性已经过期了,经过测试,发现没啥用(欢迎大家打脸)
  • @ApiOperation:这个注解用在方法上(具体接口),没有这个注解,swagger就不会扫描这个方法,也不会在接口文档中体现。value是接口的描述信息;httpMethod是方法的请求方式,可以是get/post/put/delete,也就是restful请求类型;notes是也就是提示信息;response是响应的对象类型,目前感觉没啥用;
  • @ApiParam:可以指定请求入参的各种属性,包括是否必须、示例、允许的值等等
@Controller
@Api(description = "spring boot swagger demo22222")
@RequestMapping("/swagger/dome")
public class SwaggerDemoController {

    @ResponseBody
    @ApiOperation(value = "swagger2示例接口描述",httpMethod = "POST",
            notes = "这里是notes信息", response = TestEntity.class)
    @RequestMapping("/list")
    public TestEntity listTest(TestEntity testEntity) {
        return testEntity;
    }
    
     @RequestMapping("/list2")
    public String listTest2(@ApiParam(name = "name", value = "value",
            allowableValues = "test2",example = "小王", required = true) String name) {
        return name + ", hello";
    }
}

Entity实体增加swagger注解

@ApiModel注解是加在我们的出参或者入参对象上的,加上这个注解,表明这是我们的入参或者出参,@ApiModelProperty和@ApiParam类似,不做过多赘述

@ApiModel("swaggerDome实体")
public class TestEntity implements Serializable {
    // 名称
    @ApiModelProperty(name = "name",value = "名称:用户名称", required =true, notes = "这个是提示信息")
    private String name;
    // id
    @ApiModelProperty(value = "用户id,默认为010001",
            allowableValues = "010001,020001,030001,040001,050001,060001,070001,080001,090001,100001,110001,120001,990001")

    private String id;

/*
为了便于展示,这里省略了getter和setter方法
*/
}

总结

其实,swagger2还有很多内容,但我觉得都内容都不难,更多的内容需要各位小伙伴去探索实验,这里就算抛砖引玉了,你也可以当我偷懒。目前还有很多类似的文档工具,有时间研究下:

  • knife4j
  • api2doc

本次示例项目路径:https://github.com/Syske/learning-dome-code/tree/master/spring-boot-swagger2-demo

posted @ 2020-05-13 23:17  云中志  阅读(357)  评论(0编辑  收藏  举报