Prefacio
Swagger, el significado chino de "trago". Es un poderoso marco de API, su integración es muy simple, no solo proporciona una revisión de documentación en línea,
Además, se proporciona documentación en línea. Además, Swagger es fácil de construir API de estilo RESTful.
Swagger es un conjunto de herramientas de código abierto construidas alrededor de la especificación de OpenAPI para ayudar a diseñar, construir, documentar y usar API REST.
En pocas palabras, parece facilitar la prueba de la interfaz RESTFUL en segundo plano e implementar actualizaciones dinámicas cuando estamos en la interfaz de fondo.
Después de la modificación, Swagger puede actualizarse automáticamente sin la necesidad de mantener esta interfaz para las pruebas como cree.
Swagger indica a través de la anotación que la interfaz generará un documento, incluido el nombre de la interfaz, el método de solicitud, los parámetros, la información de retorno, etc.
<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>
A través de la anotación de @Configuration, indica que es una clase de configuración, y @habilitawagger2 habilita swagger2.
Configuración APIINFO () Cierta información básica. APIS () especifica que el paquete escaneado generará un documento.
Después de crear el frijol de expediente a través de la función Createrestapi, ApiInfo () utiliza la información básica de la API (esta información básica se mostrará en la página del documento). La función select () devuelve una instancia de APISELECTBUIREDER para controlar qué interfaces están expuestas a Swagger para visualizar. Este ejemplo utiliza la ruta del paquete escaneado especificado para definir. Swagger escaneará todas las API definidas por el controlador en el paquete y generará contenido de documento (excepto la solicitud especificada por @Apiignore).
paquete com.lance.learn.springbootswagger.configuration; import org.springframework.context.annotation.bean; importar org.springframework.context.annotation.configuration; import springfox.documentation.builders.apiinfobuilt; import springfox.documation.builders.pathselecters; importators; importación; importación; springfox.documentation.builders.RequestHandLersElectors; import springfox.documentation.service.apiinfo; import springfox.documentation.service.contact; import springfox.documentation.spi.documentationType; import springfox.documentation.spring.web.plugins.docket; springfox.documentation.swagger2.annotations.enableswagger2;/*** @author lance (zyh)* @function swagger class de configuración de inicio* @date 2018-07-09 21:24*/ @configuración @enlesswagger2public swaggerconfiguration {/*** Swagger2 Archivo de configuración, puede configurar algunos contenidos básicos de Swagger2, tal como SwaggerConfiguration de SwaggerConfiguration. packages, etc. * @return */ @Bean public Docket createRestfulApi(){ return new Docket(DocumentationType.SWAGGER_2) .pathMapping("/") .select() .apis(RequestHandlerSelectors.basePackage("com.lance.learn.springbootswagger.controller")) //Expose the package path of the interface dirección.paths (pathelectores.any ()) .build (); } /** * Build the detailed information function of the API document, note which annotation refers to * @return */ private ApiInfo apiInfo(){ return new ApiInfoBuilder() //Page title.title("Spring Boot test to build RESTful API using Swagger2") //Create.contact(new Contact("LanveToBigData", "http://www.cnblogs.com/zhangyinhua/", "[email protected]")) // Version Number.version ("1.0") // Descripción ("Descripción de la API") .Build (); }} Las descripciones provienen principalmente de funciones de nombres, etc., y no son fáciles de usar. Por lo general, necesitamos agregar algunas instrucciones para enriquecer el contenido del documento.
Como se muestra a continuación, agregamos instrucciones a la API a través de @apioperation Annotation, y usamos @apiimpliceTparams y @apiimpliceTparam
Anotación para agregar descripción a los parámetros.
1) Ejemplo 1
paquete com.lance.learn.springbootswagger.controller; import com.lance.learn.springbootswagger.bean.book; import io.swagger.annotations.apiimplticitparam; import io.swagger.annotations.apiimpliceTparams; import io.swagger.annotations.apiimpricitparams; import; io.swagger.annotations.apioperation; import org.springframework.web.bind.annotation. *; import springfox.documentation.annotations.apiignore; import java.util. *;/** * @author lance (zyh) * @function * @date 2018-07-09 21:39 */ @sain "/bookcurd") public class BookController {map <long, book> books = colección.synchronizedmap (new Hashmap <long, book> ()); @Apioperation (value = "Get Book List", Notes = "Get Book List") @RequestMapping (value = {""}, método = requestmethod.get) lista pública <Book> getBook () {list <Book> book = new ArrayList <> (books.values ()); libro de regreso; } @Apioperation (value = "Crear un libro", notas = "Crear un libro") @apiimpliceTParam (name = "book", value = "Book Entity detallado", requerido = true, dataType = "book") @requestmapping (valor = "", método = requestMethod.post) public string postbook (@Request Book) {bookspput (book.getid (), Book);); devolver "éxito"; } @Apioperation (value = "Obtenga información detallada sobre el libro", notas = "Obtenga información detallada basada en la ID de la url") @apiimpliceTparam (name = "id", value = "id", requerir = true, dataType = "long", paramType = "path") @requestmapping (valor = "/{id}", método = requestmethod.get) Long id) {return books.get (id); } @ApiOperation(value="Update information", notes="Specify update book information based on the url's id") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "Book ID", required = true, dataType = "Long",paramType = "path"), @ApiImplicitParam(name = "book", value = "book entity book", required = True, Datatype = "Book")}) @RequestMapping (valor = "/{id}", método = requestmethod.put) public String putUser (@PathVariable Long ID, @RequestBody Book Book) {Libro Book1 = Books.get (id); book1.setName (book.getName ()); book1.setPrice (book.getPrice ()); Libros.put (ID, Libro1); devolver "éxito"; }} @Apioperation ((valor = "delete book", notas = "especifique la eliminación de libros basado en la identificación de la url") @apiimpliceTParam (name = "id", valor = "ID de libro", requerido = verdadero, datatype = "Long", paramType = "ruta") a DeleteUser (@PathVariable Long ID) {books.remove (id); devolver "éxito"; } @Apiignore // Use esta anotación para ignorar esta API @RequestMapping (valor = "/hi", método = requestMethod.get) public String JSontest () {return "¡Hola!"; }}2) Ejemplo 2
paquete com.lance.learn.springbootswagger.controller; import com.lance.learn.springbootswagger.bean.user; import io.swagger.annotations.apiimpliceTparam; import io.swagger.annotations.apiimpliceParams; import io.swagger.Annotations.apiImpiParams; io.swagger.annotations.apioperation; import org.springframework.web.bind.annotation. *; import java.util. *;/** * @author lance (zyh) * @function * @date 2018-07-09 22:00 */ @restscroller @requestmaping (valor = "/usuarios") Publics usuarios Map <long, user> users = collections.synchronizedMap (nuevo hashmap <long, user> ()); @Apioperation (valor = "Get Get User List", notas = "") @RequestMapping (valor = {""}, método = requestMethod.get) Lista pública <serem> getUserList () {list <serem> r = new ArrayList <Ser User> (users.values ()); regresar r; } @Apioperation (value = "Crear usuario", notas = "Crear usuario desde el objeto de usuario") @apiimpliceTParam (name = "user", value = "Usuario de entidad detallada", requerido = true, datatype = "user") @RequestMapping (value = "", método = requestmethod). Postuser (@ReRequestBody user) {futor (usuarios), usuarios (usuarios). 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 (valor = "actualizar detalles del usuario", notas = "Especifique los objetos de actualización basados en la ID de la URL y actualizar los detalles del usuario basados en la información de usuario transmitida") @ApiimpliceTParams ({@ApiIimpliceTParam (name = "id", value = "ID de usuario", requerido = verdadero, datatype = "Long"), @apiiMpLicParam (nombre de nombre = "Usuario", requerido ", requerido", requerido ", requerido", requerido ". Entity user ", requería = true, datatype =" user ")}) @RequestMapping (valor ="/{id} ", método = requestmethod.put) public String PutUser (@PathVariable Long ID, @RequestBody User User) {User U = New User (); users.put (id, u); devolver "éxito"; } @Apioperation (value = "Eliminar usuario", notas = "especificar el objeto Eliminar según la identificación de la url") @apiimpliceitParam (name = "id", value = "ID de usuario", requerido = true, dataType = "Long") @RequestMapping (value = "/{id}", método = requestmethod.delete) public string string (@pathvAration (@pathvAration ussers.remove (ID); devolver "éxito"; }}https://github.com/lancetobigdata/springbootlearning/tree/develop/springboot-swagger
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.