springboot (20) —— Swagger

1 arrogância

Extremidades frontais e traseiras separadas
-> camadas de controle dianteiras, visualização da camada da
extremidade traseira -> camada de controle de backhaul e camada de serviço, camada de acesso de dados
dianteiro e traseiro por API interage
nas extremidades dianteira e traseira e
problemas independentes fracamente acoplados decorrentes de
dianteiro e traseiro integrado dianteiro ou traseiro O fim é incapaz de "negociar a tempo e resolvê-lo o mais rápido possível", o que eventualmente leva a um surto concentrado de
problemas. Soluções
Primeiro defina o esquema [esboço do plano] e rastreie o API mais recente em tempo real para reduzir os riscos de integração.
Swagger é
conhecido como a estrutura de API mais popular do mundo.
Documento Api Restful Gerador automático online => documentação da API e definição da API são atualizadas de forma síncrona e
executadas diretamente, a API de teste online
suporta vários idiomas ( tais como: Java, PHP, etc.)
Site oficial: https://swagger.io/

2 SpringBoot integra Swagger

Adicionar dependência Maven ao novo projeto springweb

<!-- 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 escrever um projeto Hello
para usar Swagger, precisamos escrever uma classe de configuração-SwaggerConfig para configurar o Swagger

package com.zs.swagger.config;

import org.springframework.context.annotation.Configuration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2 // 开启swagger2
public class SwaggerConfig {
    
    
    
}

Visite teste: http: // localhost: 8080 / swagger-ui.html, você pode ver a interface do swagger;
Insira a descrição da imagem aqui

3 Configure Swagger

O bean de instância Swagger é Docket, então configure Swaggger configurando a instância Docket

@Bean //配置docket以配置Swagger具体参数
public Docket docket() {
    
    
   return new Docket(DocumentationType.SWAGGER_2);
}

As informações de configuração a seguir podem ser obtidas por meio das informações do documento de configuração de propriedade apiInfo ()
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

//配置文档信息
private ApiInfo apiInfo() {
    
    
   Contact contact = new Contact("联系人名字", "http://xxx.xxx.com/联系人访问链接", "联系人邮箱");
   return new ApiInfo(
           "Swagger学习", // 标题
           "学习演示如何配置Swagger", // 描述
           "v1.0", // 版本
           "http://terms.service.url/组织链接", // 组织链接
           contact, // 联系人信息
           "Apach 2.0 许可", // 许可
           "许可链接", // 许可连接
           new ArrayList<>()// 扩展
  );
}

Insira a descrição da imagem aqui

4 Configure a interface de digitalização

Configure como fazer a varredura da interface por meio do método select () ao construir o Docket

@Bean
public Docket docket() {
    
    
	  return new Docket(DocumentationType.SWAGGER_2)
	     .apiInfo(apiInfo())
	     .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
	     .apis(RequestHandlerSelectors.basePackage("com.kuang.swagger.controller"))
	     .build();
}

Insira a descrição da imagem aqui
Além de configurar a interface de verificação por meio do caminho do pacote, você também pode configurar outros métodos para verificar a interface. Aqui, observe todos os métodos de configuração
any () // Verificar tudo, todas as interfaces no projeto serão verificadas

nenhum () // não verifica a interface

// Faça a varredura de anotações em métodos, como withMethodAnnotation (GetMapping.class), faça a varredura apenas de solicitações de
obtenção com a anotação de classe final

// Varre as anotações nas classes, como .withClassAnnotation (Controller.class) só varre as interfaces nas classes com as anotações do controlador com a anotaçãoClassAnnotation
(classe final <? Extends Annotation> anotação)

basePackage (final String basePackage) // verifica a interface de acordo com o caminho do pacote

Além disso, também podemos configurar a filtragem de verificação de interface

    public Docket docket() {
    
    
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()//通过.select()方法,去配置扫描接口
                .apis(RequestHandlerSelectors.basePackage("com.zs.swagger.controller"))// RequestHandlerSelectors配置如何扫描接口
                // 配置如何通过path过滤,即这里只扫描请求以/zs开头的接口
                .paths(PathSelectors.ant("/zs/**"))
                .build();
    }

5 Configure a chave Swagger

Configure se deseja ativar o swagger por meio do método enable (). Se for falso, o swagger não estará acessível no navegador

@Bean
public Docket docket() {
    
    
   return new Docket(DocumentationType.SWAGGER_2)
      .apiInfo(apiInfo())
      .enable(false) //配置是否启用Swagger,如果是false,在浏览器将无法访问
      .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
      .apis(RequestHandlerSelectors.basePackage("com.zs.swagger.controller"))
       // 配置如何通过path过滤,即这里只扫描请求以/zs开头的接口
      .paths(PathSelectors.ant("/zs/**"))
      .build();
}

Como configurar dinamicamente para exibir swagger quando o projeto está no ambiente de teste e desenvolvimento, mas não quando está em produção

 @Bean
    public Docket docket(Environment environment) {
    
    
        // 设置要显示的swagger的环境
        Profiles profiles = Profiles.of("dev");
        // 获取项目环境是否处在自己需要的环境
        boolean flag = environment.acceptsProfiles(profiles);

        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(flag)
                .select()//通过.select()方法,去配置扫描接口
                .apis(RequestHandlerSelectors.basePackage("com.zs.swagger.controller"))// RequestHandlerSelectors配置如何扫描接口
                // 配置如何通过path过滤,即这里只扫描请求以/zs开头的接口
                .paths(PathSelectors.ant("/zs/**"))
                .build();
    }

Insira a descrição da imagem aqui

6 Configure o agrupamento de API

Se nenhum grupo for configurado, o padrão é o padrão. O grupo pode ser configurado através do método groupName ()
Insira a descrição da imagem aqui

@Bean
public Docket docket(Environment environment) {
    
    
   return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
      .groupName("hello") // 配置分组
       // 省略配置....
}

Como configurar vários grupos? Configurar vários grupos só precisa configurar vários encaixes

@Bean
public Docket docket1(){
    
    
   return new Docket(DocumentationType.SWAGGER_2).groupName("group1");
}
@Bean
public Docket docket2(){
    
    
   return new Docket(DocumentationType.SWAGGER_2).groupName("group2");
}
@Bean
public Docket docket3(){
    
    
   return new Docket(DocumentationType.SWAGGER_2).groupName("group3");
}

Insira a descrição da imagem aqui

7 Configuração de entidade

Crie uma nova classe de entidade

package com.zs.swagger.pojo;

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

@ApiModel("用户实体(User)")
public class User {
    
    
    @ApiModelProperty("用户名")
    private String username;
    @ApiModelProperty("密码")
    private String password;
}
    @RequestMapping("/getUser")
    public User getUser() {
    
    
        return new User();
    }

Não é que a anotação @ApiModel faça a entidade aparecer aqui, mas a entidade que aparece no valor de retorno do método de interface será exibida aqui, e as duas anotações @ApiModel e @ApiModelProperty são apenas para adicionar anotações à entidade.
Insira a descrição da imagem aqui
Também podemos configurar algumas notas para a interface solicitada

package com.zs.swagger.controller;

import com.zs.swagger.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(value = "/hello")
    public String hello() {
    
    
        return "hello";
    }

    @PostMapping("/getUser")
    public User getUser() {
    
    
        return new User();
    }

    @GetMapping("/hi")
    @ApiOperation("对你说hi")
    public String hi(@ApiParam("用户名") String username) {
    
    
        return "hi"+username;
    }
}

Insira a descrição da imagem aqui
Nesse caso, você pode adicionar algumas informações de configuração a algumas propriedades ou interfaces mais difíceis de entender, para que seja mais fácil para as pessoas lerem o
bootstrap-ui. Visite http: // localhost: 8080 / doc.html

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

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/zs18753479279/article/details/112761195
Recomendado
Clasificación