Resumen: en el desarrollo del proyecto, a menudo se espera que se separe de los extremos delanteros y traseros, es decir, los desarrolladores de back -end a menudo necesitan generar una gran cantidad de interfaces de servicio. Ya sea Java o PHP y otros idiomas, el proveedor de interfaz a menudo necesita gastar una cierta cantidad de esfuerzo para escribir documentos de interfaz, como la dirección de la interfaz A, la situación de los parámetros que debe aprobarse, el formato de datos JSON del valor de retorno y la descripción de cada campo. Por supuesto, también debe considerar los encabezados de solicitudes HTTP, el contenido de solicitud y otra información. A medida que el proyecto progresa rápidamente e itera rápidamente, las interfaces que salen por el backend a menudo enfrentan problemas como la modificación y la reparación, lo que también significa que los documentos de la interfaz también deben ajustarse en consecuencia. El mantenimiento y la legibilidad de los documentos de la interfaz se reducen considerablemente.
Dado que el documento de la interfaz requiere mantenimiento de energía y una comunicación cara a cara adecuada, ¿por qué no pensamos en una solución? Primero: no necesita escribir documentos de interfaz; Segundo: cuando el front-end y el back-end comunican problemas de interfaz, ¿puede el back-end proporcionar una URL? Enumere todas las interfaces de servicio que se pueden llamar en esta URL y enumere los parámetros y la descripción del valor de retorno en cada interfaz de servicio. Tercero: si la interfaz de back-end puede simular llamadas, todos los problemas se resolverán. En este artículo, nos centraremos en explicar el marco integrado de Swagger2 en Sringboot.
1.1. Agregar dependencia de Swagger2
Agregue las siguientes dependencias al archivo pom.xml del proyecto.
<Spendency> <MoupRoMID> io.springfox </groupid> <artifactid> springfox-swagger2 </arfactid> <versever> 2.7.0 </verversion> </pendency> <epardency> <proupID> io.springfox </groupid> <artifactid> springfox-swagger-ui </artifactid> <version> 2.7.0 </versión </versión> versión </version>
Primero, necesitamos crear una clase de inicio, el código es el siguiente:
@SpringBootApplicationPublic Aplolation {public static void main (string [] args) {springApplication.run (application.class, args); }}Luego cree una nueva clase de configuración para Swagger2 en el mismo directorio de nivel de la clase anterior de la siguiente manera:
@Configuration @habilswagger2Public Class swagger2 {@Bean Public Docket creeaterestapi () {return New Docket (DocumentationType.Swagger_2) .APIInfo (apiInfo ()) .select () .APIS (requestHandlerselectors.basePackage ("com.shareniu.web") .paths (() () () () () () () () () () () (). .construir(); } private apiinfo apiInfo () {return new apiInfobuilder () .title ("Sigue compartir NIU para aprender los cursos de la serie de análisis de código fuente SpringBoot") .Description ("Para más artículos relacionados con el arranque de primavera, siga el Blog de compartir NIU") .terMesofserviceUrl ("http://wwww.shareniu.com/") ")") ")") ")") ")") ")") ") .contact ("niu") .license ("Copyright 2017-2018 Share Niu") .Version ("1.0") .Build (); }}@Configuration ha formulado que Spring debe cargar esta clase, y @habilita la anotación de AablewGer2 debería habilitar la función Swagger.
El APIINFO en lo anterior eventualmente se mostrará en la parte delantera. Utilizamos el paquete de escaneo para configurar la configuración, es decir, requesthandlerselectors.basepackage. Los controladores en este paquete y el subpackaje finalmente generan documentos API. (Excepto para las solicitudes especificadas por @Apiignore Annotation).
1.2. Instrucciones de documentación agregadas
Después de la declaración de clase anterior, podemos llamarlo directamente, pero para aumentar la legibilidad del documento, aún necesitamos agregar algunas instrucciones a la interfaz. Escribamos primero un controlador de la siguiente manera:
@RestController@requestmapping (valor = "/usuarios") clase pública UserController {mapa estático <Long, user> users = collections.synChronizedMap (new HashMap <Long, user> ()); static {user user = new User (); user.setage (18); user.setID (1L); user.setName ("aa"); ussers.put (1L, usuario); } @Apioperation (value = "Get All User List", Notes = "") @RequestMapping (valor = {""}, método = requestmethod.get) lista pública <serem> getUserList () {list <serer> r = new ArrayList <Ser User> (Uss.Values ()); regresar r; } @Apioperation (value = "crea un nuevo usuario", notas = "Crear un usuario desde el objeto de usuario") @apiimpliceTParam (name = "user", value = "User Entity Entity User", requerido = true, dataType = "user") @RequestMapping (value = ", método = requestmethod.post) Postuser (@Requestbody User User) {User. (User. usser. (User. usser. (User. (usuars.), (User. (User. users. usuario); devolver "éxito"; } @Apioperation (valor = "obtener detalles del usuario", notas = "Obtenga detalles del usuario basados en la identificación de la url") @apiimpliceTparam (name = "id", valor = "ID de usuario", requerido = true, dataType = "long") @RequestMapping (valor = "/{id}", método = requestmethod.get) ussers.get (id); } @ApiOperation(value="Update user details", notes="Specify update object according to url id") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "User ID", required = true, dataType = "Long"), @ApiImplicitParam(name = "user", value = "User detailed entity user", required = true, dataType = "User") }) @RequestMapping (valor = "/{id}", método = requestmethod.put) public String PutUser (@PathVariable Long ID, @RequestBody User User) {user u = users.get (id); U.SetName (user.getName ()); U.Setage (user.getage ()); users.put (id, u); devolver "éxito"; } @Apioperation (value = "Eliminar usuarios existentes", notas = "especifique el objeto Eliminar de acuerdo con la identificación de la url") @apiimpliceTParam (name = "id", value = "user id", requerir = true, datatype = "long") @requestMapping (value = "/{id}", método = requestmethod.delete) público string string deletee ussers.remove (ID); devolver "éxito"; }} @Apioperation: se usa para describir la función de esta interfaz. Esta anotación puede explicar las responsabilidades de la interfaz, la información del encabezado de retorno, el método de solicitud del método ("Get", "Head", "Post", "Put", "Eliminar", "Opciones" y "Patch"), Protocol (HTTP, HTTPS, WS, WSS) y Código de estado HTTP.
@ApiimpliceTparam: se usa para agregar descripciones a los parámetros. Puede establecer el nombre del parámetro, ya sea un elemento requerido, la información de descripción del parámetro, ya sea de solo lectura, etc.
Después de enviar el código anterior, inicie SpringBoot y visite http://127.0.0.1:8080/swagger-ui.html como se muestra en la figura a continuación:
La imagen de arriba se divide en dos partes. La parte superior está configurada a través de la clase Swagger2, y la parte inferior es el documento de interfaz en la clase UserController.
Aquí usamos /usuario como ejemplo para ilustrar:
Haga clic /Usuario como se muestra en la siguiente figura:
El punto amarillo anterior muestra los datos de muestra devueltos por esta interfaz. Es decir, la estructura de datos del usuario. Tipo de contenido de respuesta: la información del encabezado devuelta por la interfaz. Haga clic en Pruébelo. Como se muestra a continuación:
Los encabezados de Baody, Code y Response devueltos por esta interfaz se han devuelto correctamente.
Resumir
Lo anterior es el método para integrar el marco Swagger2 en SpringBoot introducido por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!