springBoot simplesmente usa Swagger

Introdução:

Acredito que tanto o desenvolvimento front-end quanto o back-end sejam mais ou menos torturados por documentos de interface. O front-end frequentemente reclama que a documentação da interface fornecida pelo back-end é inconsistente com a situação real. O back-end também sente que escrever e manter documentos de interface consumirá muita energia e geralmente é tarde demais para atualizar. De fato, se o front-end chama o back-end ou o back-end chama o back-end, espera-se um bom documento de interface. Mas para os programadores, esse documento de interface é como comentários, muitas vezes reclamam que o código escrito por outros não tem comentários, porém, quando eles escrevem seu próprio código, o mais chato é escrever comentários. Portanto, não basta regular todos pela coerção, com o passar do tempo e a iteração das versões, a documentação da interface muitas vezes não consegue acompanhar o código.

Quando você encontra um ponto de dor, você precisa encontrar uma solução. Quando mais pessoas usam a solução, ela se torna uma especificação padrão, que é a origem do Swagger. Através deste conjunto de especificações, você só precisa definir interfaces e informações relacionadas à interface de acordo com suas especificações. Através de uma série de projetos e ferramentas derivadas do Swagger, é possível gerar documentos de interface em vários formatos, gerar códigos de cliente e servidor em vários idiomas, páginas de depuração de interface online, etc. Desta forma, de acordo com o novo modo de desenvolvimento, ao desenvolver uma nova versão ou uma versão iterativa, você só precisa atualizar o arquivo de descrição do Swagger, e o documento de interface e o código do servidor do lado cliente podem ser gerados automaticamente, para que a chamada O código do lado do servidor, o código do lado do servidor e a interface podem ser alcançados.Consistência de documentação.

Gabarito

  • A estrutura de API mais popular do mundo

  • Gerador automático on-line do documento Restful Api => O documento da API e a definição da API são atualizados de forma síncrona

  • Execute-o diretamente, teste a API online

  • Suporta vários idiomas (por exemplo: Java, PHP, etc.)

  • Site oficial: https://swagger.io/

 

comece a usar

     importar dependências


        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

Para usar o Swagger, precisamos escrever uma classe de configuração - SwaggerConfig para configurar o Swagger

   Escreva a classe SwaggerConfigl

package com.chen.config;


import jdk.nashorn.internal.ir.RuntimeNode;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import sun.plugin.dom.core.Document;

import java.lang.reflect.Array;
import java.util.ArrayList;

@Configuration
@EnableSwagger2    //开启Swaqger2
public class SwaggerConfig {


    //groupName()->配置多个分组
    @Bean
    public Docket docket1(){

        return new Docket(DocumentationType.SWAGGER_2).groupName("A");
    }

    @Bean
    public Docket docket2(){

        return new Docket(DocumentationType.SWAGGER_2).groupName("B");
    }


    //配置了swagger的Docket的bean实例
    //访问路径:http://localhost:8080/swagger-ui.html#/
    @Bean
    public Docket docket(Environment environment) {

        //设置要显示的开发者环境
        Profiles profiles= Profiles.of("dev","test");
        //获取项目的环境:
       boolean flag= environment.acceptsProfiles(profiles);
      System.out.println("==="+flag);

       return new Docket(DocumentationType.SWAGGER_2)
               .apiInfo(apiInfo())
               .groupName("C")
               .enable(flag)  //enable是否启动swagger,如果为false,则swagger不能再浏览器中访问
               .select()
               //RequestHandlerSelectors配置要扫描的接口
               //basePackage:指定要扫描的包
               //any():扫描全部
               //none:不扫描
               .apis(RequestHandlerSelectors.basePackage("com.chen.controller"))
               //withClassAnnotation()扫描类上的注解,参数是一个注解的反射对象
               //withMethodAnnotation()扫描方法上的注解
               //.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
               //paths() 过滤什么路径
               //.paths(PathSelectors.ant("/chen/**"))
               .build();

    }


    //配置Swagger信息==apiInfo
    private ApiInfo apiInfo(){

        //作者信息
        Contact contact=new Contact("陈锦贤","url","[email protected]");
        return new ApiInfo("test Swagger文档",
                "Api Documentation",
                "1.0",
                "urn:tos",
                 contact,
                "Apache 2.0" ,
                "url",
                new ArrayList());
   
    }

}



Gravar classe de entidade: usuário

    

package com.chen.pojo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

//Api(注释)
@ApiModel("用户实体类")
public class User {


    @ApiModelProperty("用户名")
    public String username;
    @ApiModelProperty("密码")
    public String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

      Escreva a classe de controle: HelloController

package com.chen.controller;

import com.chen.pojo.User;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello(){
        return "hello";

    }

    //只有我们的接口中,返回值中存在实体类
    @PostMapping("/user")
    public User user(){
        return new User();

    }
    //operation接口,不是放在实体类上,是方法
    @ApiOperation("Hello控制类")
    @GetMapping("/hello2")
    public String hello(@ApiParam("用户名") String username){

        return "hello2"+username;
    }

    //operation接口,不是放在实体类上,是方法
    @ApiOperation("Post测试类")
    @PostMapping("/hello3")
    public User hello3(@ApiParam("用户名") User user){

        return user;
    }
}

 

realizar testes:

Navegador aberto:  http://localhost:8081/swagger-ui.html

Clique em experimentar para testar

 

 

Finalmente, podemos importar diferentes pacotes para implementar diferentes definições de skin:

   <!-- 引入swagger-bootstrap-ui包 /doc.html-->
      <!--  <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.9.1</version>
        </dependency>-->


        <!-- 引入swagger-ui-layer包 /docs.html-->
       <!-- <dependency>
            <groupId>com.github.caspar-chen</groupId>
            <artifactId>swagger-ui-layer</artifactId>
            <version>1.1.3</version>
        </dependency>-->

        <!-- 引入swagger-ui-layer包 /document.html-->
     <!--  <dependency>
            <groupId>com.zyplayer</groupId>
            <artifactId>swagger-mg-ui</artifactId>
            <version>1.0.6</version>
        </dependency>-->

 

Fonte da nota: https://www.bilibili.com/video/BV1PE411i7CV?p=48

   

Acho que você gosta

Origin blog.csdn.net/qq_44716544/article/details/117997073
Recomendado
Clasificación