Cambié Swagger a una nueva piel e instantáneamente me volví más alto

Autor: macrozheng

Enlace original: https://mp.weixin.qq.com/s/XbBD0E136F72gI6OkVIZeA

Swagger, como herramienta de generación de documentos API, aunque la función es muy completa, todavía existen algunas deficiencias. Accidentalmente encontré que knife4j compensaba estas deficiencias y le daba más funciones a Swagger. Hoy hablaremos sobre cómo usarlo.

Introducción a knife4j

Knife4j es una implementación mejorada de la interfaz de usuario de springfox-swagger, que proporciona una experiencia de documentación de interfaz simple y poderosa para los desarrolladores de Java cuando usan Swagger. Knife4j sigue completamente el método de uso en springfox-swagger y tiene funciones mejoradas sobre esta base. Si ha usado Swagger, puede cambiar sin problemas a knife4j.

Inicio rápido

A continuación, presentaremos cómo usar knife4j en SpringBoot, ¡solo dos pasos!

  • Aumente las dependencias relevantes de knife4j en pom.xml;
<!--整合Knife4j-->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>2.0.4</version>
</dependency>
  • Agregue una anotación @ EnableKnife4j a Swagger2Config, que puede habilitar la función mejorada de knife4j;
/**
 * Swagger2API文档的配置
 */
@Configuration
@EnableSwagger2
@EnableKnife4j
public class Swagger2Config {
    }
  • Ejecute nuestra aplicación SpringBoot y visite la dirección del documento API para ver: http: // localhost: 8088 / doc.html

Cambié Swagger a una nueva piel e instantáneamente me volví más alto

 

Caracteristicas

A continuación, comparemos Swagger y veamos cuál es la diferencia entre usar knife4j y eso.

Mejora de la función JSON

Siempre uso Swagger, pero el soporte JSON de Swagger no ha sido muy bueno. JSON no se puede plegar y es demasiado largo para verlo. Al pasar parámetros de formato JSON, no hay función de verificación de parámetros. Estos puntos débiles se han resuelto en knife4j.

  • El conjunto de resultados devuelto admite el plegado para facilitar la visualización;

Cambié Swagger a una nueva piel e instantáneamente me volví más alto

 

  • El parámetro de solicitud tiene una función de verificación JSON.

Cambié Swagger a una nueva piel e instantáneamente me volví más alto

 

Autenticación de inicio de sesión

knife4j también admite la adición de Token al encabezado para la autenticación de inicio de sesión.

  • Primero agregue el Token devuelto por el inicio de sesión en la función Autorizar;

Cambié Swagger a una nueva piel e instantáneamente me volví más alto

 

  • Posteriormente, en cada interfaz, puede ver que la información del Token se ha transportado en el encabezado de la solicitud.

Cambié Swagger a una nueva piel e instantáneamente me volví más alto

 

Documentos sin conexión

knife4j admite la exportación de documentos sin conexión para enviarlos fácilmente a otras personas y admite el formato Markdown.

  • Seleccione directamente la gestión de documentos -> función de documento sin conexión, y luego elija descargar Markdown;

Cambié Swagger a una nueva piel e instantáneamente me volví más alto

 

  • Revisemos el documento sin conexión de Markdown exportado, que aún es muy detallado.

Cambié Swagger a una nueva piel e instantáneamente me volví más alto

 

Parámetros globales

knife4j admite la configuración temporal de parámetros globales y admite dos tipos de consulta (formulario) y encabezado (encabezado de solicitud).

  • Por ejemplo, si queremos agregar un parámetro appType a todos los encabezados de solicitud para distinguir si es una llamada de Android o iOS, podemos agregarlo en los parámetros globales;

Cambié Swagger a una nueva piel e instantáneamente me volví más alto

 

  • Cuando se llame a la interfaz en este momento, se incluirá el encabezado de solicitud appType.

Cambié Swagger a una nueva piel e instantáneamente me volví más alto

 

Ignorar atributos de parámetros

A veces, la interfaz que creamos y modificamos usará el mismo objeto que el parámetro de solicitud, pero no necesitamos id cuando lo creamos, y necesitamos id cuando lo modificamos. En este momento, podemos ignorar el atributo id.

  • Por ejemplo, en la interfaz de creación de productos aquí, la identificación, la cantidad del producto y las reseñas de productos se pueden generar sin pasar la interfaz de fondo. Puede usar la anotación @ApiOperationSupport proporcionada por knife4j para ignorar estos atributos;
/**
 * 品牌管理Controller
 * Created by macro on 2019/4/19.
 */
@Api(tags = "PmsBrandController", description = "商品品牌管理")
@Controller
@RequestMapping("/brand")
public class PmsBrandController {
    @Autowired
    private PmsBrandService brandService;
    private static final Logger LOGGER = LoggerFactory.getLogger(PmsBrandController.class);
    @ApiOperation("添加品牌")
    @ApiOperationSupport(ignoreParameters = {"id","productCount","productCommentCount"})
    @RequestMapping(value = "/create", method = RequestMethod.POST)
    @ResponseBody
    public CommonResult createBrand(@RequestBody PmsBrand pmsBrand) {
        CommonResult commonResult;        int count = brandService.createBrand(pmsBrand);        if (count == 1) {
            commonResult = CommonResult.success(pmsBrand);            LOGGER.debug("createBrand success:{}", pmsBrand);
        } else {
            commonResult = CommonResult.failed("操作失败");
            LOGGER.debug("createBrand failed:{}", pmsBrand);
        }        return commonResult;
    }}
  • En este momento, al ver el documento de la interfaz, encontré que estos tres atributos han desaparecido, por lo que el desarrollo de front-end no sentirá que ha definido parámetros inútiles al ver el documento de la interfaz. ¿Es una buena función?

Cambié Swagger a una nueva piel e instantáneamente me volví más alto

 

Referencia

Documento oficial: https://doc.xiaominfo.com/guide/

Dirección de origen del proyecto

https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-knife4j

Supongo que te gusta

Origin blog.csdn.net/GYHYCX/article/details/108798427
Recomendado
Clasificación