• Swagger的使用和部署


    简介

    Swagger是什么?

    官方解释:Swagger是一组围绕 OpenAPI 规范构建的开源工具,可帮助您设计、构建、记录和使用 REST API。

    https://swagger.io/docs/specification/about/

    个人理解:Swagger就是将你的接口生成可视化的html供你查看、调用、测试的一个工具。现在来说挺方便开发的,特别是前后端分离的项目。

     

    Swagger的版本和UI

    截至今日,Swagger已经更新到3.0的版本了。参考官网:https://swagger.io/

    要在spring框架的项目使用swagger,一般是用到以下两个项目代替

    SpringFox

    官网:http://springfox.github.io/springfox/docs/current/

    一般用这个多一点。

    SpringDoc

    官网:https://springdoc.org/

    spring框架的社区项目,能适配spring-boot框架。

     

    UI

    Swagger-ui

    swagger原生的ui相对简单

    使用springfox

    maven

     <dependency>
              <groupId>io.springfox</groupId>
              <artifactId>springfox-boot-starter</artifactId>
              <version>3.0.0</version>
          </dependency>

    main.class

    @SpringBootApplication
    @EnableOpenApi
    @ComponentScan(basePackages = {
           "com.bestlmc.xxx.config""})
    public class AdminApplication {
       public static void main(String[] args) {
           SpringApplication.run(AdminApplication.class,args);
      }
    }

    Configuration

    @Configuration
    public class Swagger3Config {
       @Bean
       public Docket createRestApi() {
           return new Docket(DocumentationType.OAS_30)
                  .apiInfo(apiInfo())
                  .select()
                  .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                  .paths(PathSelectors.any())
                  .build();
      }

       private ApiInfo apiInfo() {
           return new ApiInfoBuilder()
                  .title("狸花猫接口文档")
                  .description("更多请咨询服务开发者Bestlmc")
                  .contact(new Contact("bestlmc", "http://www.bestlmc.xyz/", "bestlmc@foxmail.com"))
                  .version("1.0")
                  .build();
      }
    }

    效果图:

    swagger-bootstrap-ui

    如果你不喜欢swagger-ui的话,可以尝试以下swagger-bootstrap-ui。这样看起来会更简洁一点:

    maven:

    <dependency>
              <groupId>io.springfox</groupId>
              <artifactId>springfox-swagger2</artifactId>
              <version>2.9.2</version>
          </dependency>
          <dependency>
              <groupId>com.github.xiaoymin</groupId>
              <artifactId>swagger-bootstrap-ui</artifactId>
              <version>1.9.6</version>
          </dependency>

    Configuration

    @Configuration
    @EnableSwagger2
    @EnableSwaggerBootstrapUI
    public class SwaggerConfiguration {
       @Bean
       public Docket createRestApi() {
           return new Docket(DocumentationType.SWAGGER_2)
                  .apiInfo(apiInfo())
                  .select()
                  .apis(RequestHandlerSelectors.basePackage("com.bestlmc.lihuamao.admin.controller"))
                  .paths(PathSelectors.any())
                  .build();
      }
       private ApiInfo apiInfo() {
           return new ApiInfoBuilder()
                  .title("狸花猫接口文档")
                  .description("swagger-bootstrap-ui")
                  .termsOfServiceUrl("http://localhost:8001/")
                  .contact("bestlmc@foxmail.com")
                  .version("1.0")
                  .build();
      }
    }

    效果图:

    Knife4j

    Knife4j作为swagger-bootstrap-ui的升级版,拥有更好看的ui。也变得更方便

    官网参考:https://doc.xiaominfo.com/knife4j/

    maven

    <dependency>
      <groupId>com.github.xiaoymin</groupId>
      <artifactId>knife4j-spring-boot-starter</artifactId>
      <version>2.0.7</version>
    </dependency>

    Configuration

    @Configuration
    @EnableSwagger2WebMvc
    public class Knife4jConfiguration {

       @Bean(value = "defaultApi2")
       public Docket defaultApi2() {
           Docket docket=new Docket(DocumentationType.SWAGGER_2)
                  .apiInfo(new ApiInfoBuilder()
                           //.title("swagger-bootstrap-ui-demo RESTful APIs")
                          .description("# swagger-bootstrap-ui-demo RESTful APIs")
                          .termsOfServiceUrl("http://www.xx.com/")
                          .contact("xx@qq.com")
                          .version("1.0")
                          .build())
                   //分组名称
                  .groupName("2.X版本")
                  .select()
                   //这里指定Controller扫描包路径
                  .apis(RequestHandlerSelectors.basePackage("com.github.xiaoymin.knife4j.controller"))
                  .paths(PathSelectors.any())
                  .build();
           return docket;
      }
    }

    效果图:

     

    部署

    如果要将swagger也一同打包部署到服务器上面,springfox会出现错误,无法正常访问swagger-ui。但是使用Knife4j的话,则不会出现这个问题。具体的原因有可能是因为swagger默认生成的地址是localhost,而云服务器的地址不一致而导致。参考:https://blog.csdn.net/q944324153/article/details/77833723

  • 相关阅读:
    WebForms和MVC之间的抉择
    RPM install Error: Failed dependencies
    存储NAS和SAN
    python基础31[visualstudio2010来编写python程序]
    Linux系统性能检测
    perl的引用和>
    Linux内存高级 [swap/buffer]
    python类库26[web2py的URL映射]
    python类库31[python的libpath]
    VShpere中创建新Linux(ubuntu)的virtual machine
  • 原文地址:https://www.cnblogs.com/bestlmc/p/14988018.html
Copyright © 2020-2023  润新知