uso del documento de la interfaz swagger

1. Introducción a swagger

Separación delantera y trasera

Vue + springboot un conjunto de soluciones

Era de back-end: el front-end solo administra páginas estáticas; html ===> back-end. El motor de plantilla jsp ejb backend es la fuerza principal

La era de la separación de los extremos delantero y trasero:

  • Back-end: capa de control de back-end, capa de servicio, capa de acceso a datos [equipo de back-end]
  • Interfaz: capa de control de interfaz (enlace bidireccional), capa de visualización [equipo de interfaz]
    • Datos de back-end falsificados, json. Ya existe, no se necesita backend y el proyecto completo aún puede ejecutarse.
  • ¿Cómo interactúan los extremos delantero y trasero? ===> API json
  • Extremos delantero y trasero relativamente independientes, débilmente acoplados
  • Los front-end y back-end se pueden implementar en diferentes servidores.

La separación de los extremos delantero y trasero, un problema

  • La integración de front-end y back-end y la depuración conjunta, el personal de front-end y back-end no puede hacerlo, "negociar en tiempo real, resolver lo antes posible", lo que eventualmente conduce a un brote concentrado de problemas

Solución:

  • Especifique el esquema [Esquema del plan]. Actualice la última API en tiempo real para reducir el riesgo de integración;

  • Primeros años: Desarrollar documentos de planes de Word;

  • Separación delantera y trasera:

    • Interfaz de back-end de prueba de front-end: cartero
    • ¡El back-end proporciona una interfaz y necesita actualizar las últimas noticias y cambios en tiempo real!

ha nacido la arrogancia

  • Conocido como el marco de api más popular del mundo
  • Herramienta de generación automática en línea de documentos de API Restful => el documento de API y la definición de API están sincronizados y actualizados
  • Ejecutar directamente, probar la interfaz api en línea
  • Soporta múltiples idiomas java, php, py ...

Sitio web oficial: https://swagger.io

Use swagger springbox en el proyecto

  • swagger2
  • ui

En segundo lugar, springboot integra swagger

confiar

  • Importar dependencias relacionadas

    • springfox-swagger2
    • springfox-swagger-ui
  • pom

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

Escribe la interfaz helloworld

package cn.bitqian.swagger.controller;

import org.springframework.web.bind.annotation.*;

/**
 * hello world
 * @author echo lovely
 * @date 2020/10/28 19:23
 */
@RestController
public class HelloController {
    
    

    @RequestMapping(value = "/hello")
    public String hello() {
    
    

        return "hello";
    }

}

Configurar swagger ==> clase de configuración de configuración

Swagger abierto, Enablexxx

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

Prueba de funcionamiento

http: // localhost: 8080 / swagger-ui.html

Tres, configura swagger

Dígale al personal de transferencia qué hace la interfaz y describa la interfaz del controlador. También puede establecer permisos de acceso a la interfaz.

package cn.bitqian.swagger.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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 java.util.ArrayList;

/**
 * swagger配置类
 * @author echo lovely
 * @date 2020/10/28 19:35
 */
@Configuration
@EnableSwagger2 // 开启swagger2
public class SwaggerConfig {
    
    

	// 文档的标题,和描述!作者的信息deng..
    @Bean
    public Docket docket() {
    
    

        return new Docket(DocumentationType.SWAGGER_2).apiInfo(appInfo());
    }

    // api 信息 接口文档的头部信息描述
    public ApiInfo appInfo() {
    
    

        Contact contact = new Contact("bitqian", "http://example.com", "[email protected]");

        return new ApiInfo("bitqian的swagger文档",
                "用来描述此接口的功能,内容。",
                "v1.0",
                "http://example.cn", contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }

}

interfaz de escaneo de configuración swagger


   @Bean
    public Docket docket() {
    
    

        return new Docket(DocumentationType.SWAGGER_2).apiInfo(appInfo()).
                select().
                // RequestHandlerSelectors 配置要扫描的接口的方式
                // basePackage 指定要扫描的包
                // any() 扫描全部
                // none() 不扫描
                // withClassAnnotation(Controller.class)  扫描类上的注解, 生效
                // withMethodAnnotation(RequestMapping.class)  扫描方法上的注解, 生效
                apis(RequestHandlerSelectors.basePackage("cn.bitqian.swagger.controller")).
                // paths(PathSelectors.ant("/bitqian/**"))  扫描指定的接口
            	// PathSelectors.regex("")
                paths(PathSelectors.ant("/hello/**"))
                .build();
    }

¿Cómo empezar a pavonearse solo en el entorno de producción?

  • Determinar si es un entorno de producción
  • Inyectar habilitar
    @Bean
    public Docket docket(Environment environment) {
    
    

        // 获取当前环境 是生产环境 启动swagger
        boolean isProFlag = environment.acceptsProfiles(Profiles.of("pro"));

        System.out.println("is dev environment....===========>" + isProFlag);

        return new Docket(DocumentationType.SWAGGER_2).apiInfo(appInfo()).groupName("bitqian").
                enable(isProFlag). // 是否启动swagger 如果为false,则不能在浏览器中使用swagger
                select().
                apis(RequestHandlerSelectors.basePackage("cn.bitqian.swagger.controller")).
                // paths(PathSelectors.ant("/hello/**")).
                build();
    }

Configurar la agrupación de documentos api

  • Cree múltiples expedientes y varias personas escriban diferentes interfaces
@Bean
public Docket docket1() {
    
    

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

@Bean
public Docket docket12() {
    
    

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

Cuarto, las anotaciones swagger se utilizan para describir interfaces y clases de entidad.

canta

package cn.bitqian.swagger.entity;

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

/**
 * 给实体类生成文档
 * @author echo lovely
 * @date 2020/10/29 21:09
 */
@ApiModel("user实体类")
public class User {
    
    

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

    public User() {
    
    }

    public User(String username, String password) {
    
    
        this.username = username;
        this.password = password;
    }
}

controlador

package cn.bitqian.swagger.controller;

import cn.bitqian.swagger.entity.User;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;

/**
 * hello world
 * @author echo lovely
 * @date 2020/10/28 19:23
 */
@RestController
public class HelloController {
    
    

    @ApiOperation("get/post都可的hello接口")
    @RequestMapping(value = "/hello")
    public String hello() {
    
    

        return "hello";
    }

    @ApiOperation("get的hello接口, 返回一个空 user")
    @GetMapping(value = "/hello1")
    public User hello1() {
    
    

        return new User();
    }

    @ApiOperation("hello1 接口post way~")
    @PostMapping(value = "/hello1")
    public User hello1(@ApiParam("传递用户") User user) {
    
    

        return user;
    }

    @ApiOperation("登录接口 post way~")
    @PostMapping(value = "/login")
    public String login(@ApiParam("登录用户名") @RequestParam("username") String username,
                        @ApiParam("登录密码")  @RequestParam("password") String password) {
    
    

        return "ok" + "{" + username + ", " + password + "}";
    }


}

5. ¿Qué crees que es swagger solo puede proporcionar información de descripción de interfaz? Eh ~

Swagger puede probarlo

Pruébalo


Seis, finalmente

  1. Podemos agregar información de anotaciones a algunos atributos o interfaces más difíciles de entender a través de swagger
  2. Actualización en tiempo real de la documentación de la interfaz
  3. Se puede probar en línea

Swagger es una excelente herramienta, utilizada por casi todas las grandes empresas, más acorde con las necesidades del desarrollo iterativo.

[Nota] Cuando se lance oficialmente, ¡ciérrate! ! ! Por razones de seguridad. Y ahorre memoria en funcionamiento.

Supongo que te gusta

Origin blog.csdn.net/qq_44783283/article/details/109393130
Recomendado
Clasificación