2017-09-20 1 views
1

In Swagger Java API, wenn ich einen responsecontainer = "List" (oder "Set") mit einem Code = 400, bekomme ich nicht das Modell der Antwort auf Swagger-GUI. Ich bekomme gerade Array [Objekt]. Hiermit Swagger @ApiResponse responseContainer funktioniert nicht, wenn der Code 400 ist

ist der konkrete Fall:

@CrossOrigin 
@RestController 
@RequestMapping(value = "/api") 
@Loggable(prepend = true, trim = false) 
public class ConfigResource { 

    private final ConfigResourceDelegate delegate; 

    @Inject 
    public ConfigResource(final ConfigResourceDelegate delegate) { 
     this.delegate = delegate; 
    } 


    @RequestMapping(
     value = "/v1/config", 
     method = PUT, 
     consumes = APPLICATION_JSON_UTF8_VALUE, 
     produces = APPLICATION_JSON_UTF8_VALUE 
    ) 
    @ApiResponses(value = {@ApiResponse(code=202,message = "ACCEPTED"), 
     @ApiResponse(code=200,response = Rejection.class, responseContainer 
     = "Set", message = "BAD_REQUEST"), 
     @ApiResponse(code=500, message = "INTERNAL_SERVER_ERROR")}) 
    public ResponseEntity<?> putConfig(final @RequestBody ConfigDto 
    configDto){ 
    return delegate.putConfig(riskConfigDto); 
    } 
} 

Hier ist die Rückweisungsklasse:

public class Rejection { 


private Long id; 


private RejectionDTO rejection; 


private String originMessage; 

public Rejection() { 
} 

public Long getId() { 
    return id; 
} 

public RejectionDTO getRejection() { 
    return rejection; 
} 

public String getOriginMessage() { 
    return originMessage; 
} 

public void setId(Long id) { 
    this.id = id; 
} 

public void setRejection(RejectionDTO rejection) { 
    this.rejection = rejection; 
} 

public void setOriginMessage(String originMessage) { 
    this.originMessage = originMessage; 
} 
} 

So normalerweise i'am soll dieses Modell haben zwischen [] in der Prahlerei UI. Aber ich bin immer Array [Objekt]:

See screen capture

+0

Geben Sie den Controller an, wo Sie '@ ApiResponses' verwenden. –

+0

@IndraBasak Fertig –

+0

Beantwortet mit einem Arbeitsbeispiel. –

Antwort

0

Um Ihr Beispiel funktioniert, müssen Sie Ihren Rückgabewert von Wildcard ändern, ResponseEntity<?>, auf eine konkrete Klasse, ResponseEntity<List<Rejection>>. Außerdem müssen Sie responseContainer zu List von Set ändern.

@RequestMapping(
     value = "/v1/config", 
     method = PUT, 
     consumes = APPLICATION_JSON_UTF8_VALUE, 
     produces = APPLICATION_JSON_UTF8_VALUE 
    ) 
    @ApiResponses(value = {@ApiResponse(code=202,message = "ACCEPTED"), 
     @ApiResponse(code=200,response = Rejection.class, responseContainer 
     = "List", message = "BAD_REQUEST"), 
     @ApiResponse(code=500, message = "INTERNAL_SERVER_ERROR")}) 
    public ResponseEntity<List<Rejection>> putConfig(final @RequestBody ConfigDto 
    configDto){ 
    return delegate.putConfig(riskConfigDto); 
    } 
Verwandte Themen