2017-07-04 2 views
0

Ich verwende den Swagger-Codegen, um einen Spring-Server zu erstellen.useDefaultResponseMessages (false) funktioniert nicht

habe ich auch die .useDefaultResponseMessages(false) -Attribut wie beschrieben in Swagger - Springfox always generates some response messages (401,403...) by default. How can I remove them?

SwaggerConfig.java:

public Docket customImplementation() { 
return new Docket(DocumentationType.SWAGGER_2) 
    .useDefaultResponseMessages(false) 
    .select() 
    .apis(RequestHandlerSelectors.basePackage("myrest.api")) 
    .build() 
    .directModelSubstitute(org.joda.time.LocalDate.class, java.sql.Date.class) 
    .directModelSubstitute(org.joda.time.DateTime.class, java.util.Date.class) 
    .apiInfo(apiInfo());} 

verwandten apipart: Api.java:

@ApiOperation(value = "", notes = "Returns all clouds from the system that the user has access to ", response = Cloud.class, responseContainer = "List", tags = { 
     "cloud",}) 
    @ApiResponses(value = { 
     @ApiResponse(code = 200, message = "All clouds ", response = Cloud.class), 
     /*@ApiResponse(code = 401, message = "Authorization for this action is missing", response = Error.class), 
     @ApiResponse(code = 403, message = "Forbidden action", response = Error.class), 
     @ApiResponse(code = 500, message = "An unexpected Error occured", response = Error.class),*/ 
     @ApiResponse(code = 504, message = "Server temporary not available", response = Error.class)}) 

    @RequestMapping(value = "/clouds", 
     produces = {"application/json"}, 
     method = RequestMethod.GET) 
    ResponseEntity<List<Cloud>> findClouds(); 

Aber die Prahlerei-ui sieht immer noch so aus: swagger-ui: ResponseMessageTable

So scheint es .useDefaultResponseMessages(false) funktioniert nicht.

Wie deaktiviere ich diese Standardfehlerreaktionen?


@John Duskin

ich ändert die Docketinitialization, änderte sich die @Controller-@Restcontroller aber ich noch die 404 Nachricht von Get

different looking 404-Message

die erzeugte Serverstubs von Swagger-Codegen Aussehen erhalten wie:

Api.java:

@Api(value = "clouds", description = "the clouds API") 
public interface CloudsApi { 

@ApiOperation(value = "", notes = "Returns all clouds from the system that the user has access to ", response = Cloud.class, responseContainer = "List", tags={ "cloud", }) 
@ApiResponses(value = { 
     @ApiResponse(code = 200, message = "All clouds ", response = Cloud.class), 
     @ApiResponse(code = 401, message = "Authorization for this action is missing", response = Cloud.class), 
     @ApiResponse(code = 403, message = "Forbidden action", response = Cloud.class), 
     @ApiResponse(code = 500, message = "An unexpected Error occured", response = Cloud.class), 
     @ApiResponse(code = 504, message = "Server temporary not available", response = Cloud.class) }) 

@RequestMapping(value = "/clouds", 
     produces = { "application/json" }, 
     method = RequestMethod.GET) 
ResponseEntity<List<Cloud>> findClouds(); 

und der getrennte Controller:

@RestController 
public class CloudsApiController implements CloudsApi { 

@Autowired 
private UserService userService; 
@Autowired 
private CloudService cloudService; 

public ResponseEntity<List<Cloud>> findClouds() { 
//do some magic 
    return new ResponseEntity<List<Cloud>>(cloudList, HttpStatus.OK); 
} 
[...] 
} 

Antwort

0

das Problem behoben neben Arbeits ...

war dies Problem eine Feder Annotation. In meinem SwaggerDocumentationConfig.java fügte ich @EnableSwagger2 und alles funktioniert wie

@Configuration 
@EnableSwagger2 
public class SwaggerDocumentationConfig { 

@Bean 
public Docket customImplementation(){ 
    return new Docket(DocumentationType.SWAGGER_2) 
      .useDefaultResponseMessages(false) 
      .select() 
       .apis(RequestHandlerSelectors.basePackage("myrest.api")) 
       .build() 
      .directModelSubstitute(org.joda.time.LocalDate.class, java.sql.Date.class) 
      .directModelSubstitute(org.joda.time.DateTime.class, java.util.Date.class) 
      .apiInfo(apiInfo()); 
    } 
}  
0

Versuchen, den Anruf zu useDefaultResponseMessages nach der Build-Methode in der Docket zu setzen. Ich habe deinen Code aktualisiert, um zu zeigen, was ich meine.

Hoffnung, das hilft.

public Docket customImplementation() { 
    return new Docket(DocumentationType.SWAGGER_2) 
     .select() 
     .apis(RequestHandlerSelectors.basePackage("myrest.api")) 
     .build() 
     .useDefaultResponseMessages(false) 
     .directModelSubstitute(org.joda.time.LocalDate.class, java.sql.Date.class) 
     .directModelSubstitute(org.joda.time.DateTime.class, java.util.Date.class) 
     .apiInfo(apiInfo()); 
} 

Um die Anrufe der Arbeit an meinem Rechner bekomme ich die ApiReponses mit dem Controller gesteckt haben

@RestController 
@RequestMapping("/my_model") 
@ApiResponses(value = { @ApiResponse(code = 200, message = "OK"), 
    @ApiResponse(code = 500, message = "Rocks fell, everyone died.") }) 

aktualisieren

Sie die Beschreibung des Verfahrens setzen Sind?

Hier ist, was ich an meinem Projekt arbeiten. Beachten Sie, dass die API-Antworten an den Controller angehängt sind.

@RestController 
@RequestMapping("/my_model/gogo") 
@ApiResponses(value = { @ApiResponse(code = 200, message = "OK"), 
@ApiResponse(code = 500, message = "Rocks Fall") }) 
public class GoGoClass { 

@RequestMapping(method = RequestMethod.POST) 
@ApiOperation(value = "Description") 
public void run(
     @ApiParam(value = "Param1 description") @RequestParam(required = true) final String param1, 
     @ApiParam(value = "Param 2 description") final String param2) 
     throws ModelException { 
     // Do stuff 
     } 
} 
+0

Ich habe versucht, diese Änderungen wollte, aber ich bekomme immer noch eine unerwünschte Error .... – Volker

+0

Ich habe ein Update für meinen Beitrag vorgenommen. Wenn Sie das ausprobieren möchten. Ich hoffe, es hilft. –

Verwandte Themen