En el desarrollo separado de front-end y back-end, el programador de back-end generalmente diseña la interfaz. Una vez finalizado, se debe escribir el documento de la interfaz y, finalmente, el documento se entrega al ingeniero de front-end, y el El ingeniero front-end se refiere al documento para el desarrollo.
Los documentos de interfaz se pueden generar rápidamente a través de algunas herramientas.Este proyecto utiliza Swagger para generar documentos de interfaz en línea.
¿Qué es Swagger?
La Especificación OpenAPI (OAS para abreviar) es un proyecto de la Fundación Linux, que intenta estandarizar el proceso de desarrollo de servicios RESTful mediante la definición de un lenguaje utilizado para describir el formato API o definición API. La versión actual es V3.0, y tiene ha sido lanzado y de código abierto en github.
(GitHub - OAI/OpenAPI-Especificación: El repositorio de especificaciones de OpenAPI)
Swagger es el marco de herramientas de desarrollo de API de OpenAPI Specification (OAS) más grande del mundo. Swagger es una herramienta de generación de documentos de interfaz en línea. Los desarrolladores front-end y back-end desarrollan basándose en documentos de interfaz. ( Documentación API y herramientas de diseño para equipos | Swagger )
Spring Boot puede integrar Swagger, y Swaager genera documentos de interfaz de acuerdo con las anotaciones en la clase Controller, que se pueden usar siempre que se agreguen las dependencias y la información de configuración de Swagger.
1. Agregue la dependencia swagger-spring-boot-starter al proyecto API
Java |
2. Configure la ruta del paquete de escaneo de Swagger y otra información en bootstrap.yml, el paquete base es la ruta del paquete de escaneo y escanee la clase Controller.
Java |
3. Agregue la anotación @EnableSwagger2Doc a la clase de inicio
Inicie el servicio nuevamente, el proyecto se inicia, visite http://localhost:63040/content/swagger-ui.html para ver la información de la interfaz
La siguiente figura muestra la interfaz del documento de interfaz swagger:
Hay dos problemas con este documento:
1. El nombre de la interfaz muestra que el nombre de Course-Base-Info-Controller no es intuitivo
2. La consulta del curso es un método de publicación y solo muestra publicación/curso/lista.
Realice los cambios a continuación, agregue algunas anotaciones para la descripción de la interfaz y cambie RequestMapping a PostMapping, de la siguiente manera:
Bash |
5. Vuelva a iniciar el servicio, inicie el proyecto y visite http://localhost:63040/content/swagger-ui.html para ver la información de la interfaz
La siguiente figura muestra la interfaz del documento de interfaz swagger:
Habrá descripciones sobre los parámetros de la interfaz en el documento de la interfaz, y también se pueden agregar anotaciones a la clase del modelo para explicar los atributos en la clase del modelo, lo cual es conveniente para leer el documento de la interfaz.
Por ejemplo: el nombre del atributo marcado en rojo a continuación se puede marcar con un nombre chino a través de la anotación swager, lo cual es conveniente para leer el documento de la interfaz.
El método de etiquetado es muy simple:
Encuentre la clase del modelo y agregue anotaciones a las propiedades:
Java |
Reinicie el servicio e ingrese nuevamente el documento de la interfaz, como se muestra en la siguiente figura:
Las anotaciones comunes de Swaager son las siguientes:
Agregar anotaciones de Swagger a las clases de Java puede generar interfaces de Swagger. Las anotaciones de Swagger comunes son las siguientes:
Java |
@ApiImplicitParam属性如下:
属性 |
取值 |
作用 |
paramType |
查询参数类型 |
|
path |
以地址的形式提交数据 |
|
query |
直接跟参数完成自动映射赋值 |
|
body |
以流的形式提交 仅支持POST |
|
header |
参数在request headers 里边提交 |
|
form |
以form表单的形式提交 仅支持POST |
|
dataType |
参数的数据类型 只作为标志说明,并没有实际验证 |
|
Long |
||
String |
||
name |
接收参数名 |
|
value |
接收参数的意义描述 |
|
required |
参数是否必填 |
|
true |
必填 |
|
false |
非必填 |
|
defaultValue |
默认值 |
使用Swagger可以进行接口的测试。
修改接口内容,添加一些测试代码
Java |
debug方式启动,在 return 处打断点,再用swagger请求接口。
通过下图可以看到请求参数已经正常请求至controller方法
放行继续运行,观察swagger界面,结果可以正常返回
不过存在一个问题就是LocalDateTime类型的数据转json后数据格式并不是我们要的年月日时分秒。
Configure la clase LocalDateTimeConfig en el paquete com.xuecheng.base.config del proyecto base para realizar la conversión entre cadenas y tipos LocalDateTime al convertir a json