Buscar..


Anular mensajes de respuesta predeterminados

Springfox define un conjunto de mensajes de respuesta predeterminados que se aplican a todos los controladores API de forma predeterminada. Esto incluye, por ejemplo, 201 - Created y 204 - No Content , así como varias respuestas de 40x . Puede haber casos en los que los mensajes de respuesta predeterminados no se apliquen a su API. Tienes que incorporar posibilidades para lidiar con esto:

  • Puede desactivar el mensaje de respuesta predeterminado y definir el suyo propio mediante la anotación @ApiResponses .
  • Puedes definir tus propios mensajes de respuesta globalmente.

Turno de mensajes de respuesta por defecto.

docket.useDefaultResponseMessages(false);

Ahora puede configurar sus mensajes de respuesta individuales en un nivel por controlador. P.ej

 @ApiResponses(value = {
        @ApiResponse(code=400, message = "This is a bad request, please stick to the API description", response = RestApiExceptionModel.class),
        @ApiResponse(code=401, message = "Your request cannot be authorized.", response = RestApiExceptionModel.class)
 })

Configure sus propios mensajes de respuesta predeterminados

ModelRef errorModel = new ModelRef("RestApiExceptionModel");
List<ResponseMessage> responseMessages = Arrays.asList(
        new ResponseMessageBuilder().code(401).message("Unauthorized").responseModel(errorModel).build(),
        new ResponseMessageBuilder().code(403).message("Forbidden").responseModel(errorModel).build(),
        new ResponseMessageBuilder().code(404).message("NotFound").responseModel(errorModel).build());

docket.globalResponseMessage(RequestMethod.POST, responseMessages)
        .globalResponseMessage(RequestMethod.PUT, responseMessages)
        .globalResponseMessage(RequestMethod.GET, responseMessages)
        .globalResponseMessage(RequestMethod.DELETE, responseMessages);

Configura springfox usando swagger-ui en spring-boot

  1. Obtenga springfox en su aplicación usando Maven o Gradle
  2. Crea un nuevo bean Docket en tu aplicación y configúralo
  3. Documentar su API de acuerdo a sus necesidades
  4. Inicie su aplicación y vea los resultados obtenidos.

# 1 Obteniendo springfox con Maven

Agregue las dependencias para swagger2 y swagger-ui en su pom.xml

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.6.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.6.0</version>
</dependency>

# 2 Configura tu aplicación para usar swagger

Agregue la anotación @EnableSwagger2 a su clase principal anotada @SpringBootApplication y cree un bean Docket swagger dentro de esta (o cualquier otra) clase de configuración.

@Bean
public Docket api() {                
    return new Docket(DocumentationType.SWAGGER_2)          
      .select()                                       
      .apis(RequestHandlerSelectors.any())
      .paths(PathSelectors.any())                     
      .build();
}

Esta configuración generará una documentación de API sobre todos los controladores Spring dentro de su aplicación. Si necesita limitar la generación de documentación de la API a ciertos controladores, puede elegir entre varios RequestHandlerSelectors. Por ejemplo, puede generar su documentación de API en función de la estructura de su paquete utilizando RequestHandlerSelectors.basePackage("your.package.structure") o clases específicas basadas que haya anotado utilizando RequestHandlerSelectors.withClassAnnotation(Api.class) .

# 3 documenta tu API

Use las anotaciones como se describe en la documentación para mejorar las clases y los métodos de su controlador con información adicional. Para describir la información general de su api, como el título general, la descripción o la versión, use ApiInfoBuilder () dentro de su bean Docket.

Ejemplo para la definición de metadatos usando ApiInfoBuilder:

// Within your configuration class
public static ApiInfo metadata(){
    return new ApiInfoBuilder()
            .title("Your Title")
            .description("Your Description")
            .version("1.x")
            .build();
}

// Within your method that definies the Docket bean...
docket.apiInfo(metadata());


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow