2017-09-20 7 views
1

Dans Swagger Java API, lorsque j'utilise un responsecontainer = "List" (ou "Set") avec un code = 400, je ne reçois pas le modèle de la réponse sur Swagger-GUI. Je reçois juste Array [Object].en utilisant Swagger @ApiResponse responseContainer ne fonctionne pas lorsque le code est 400

est ici le cas concret:

@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); 
    } 
} 

Voici la classe de rejet:

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; 
} 
} 

donc normalement supposé i'am ce modèle entre [] dans l'interface utilisateur de fanfaronnades. Cependant, je reçois Array [Objet]:

See screen capture

+0

Publiez le contrôleur sur lequel vous utilisez '@ ApiResponses'. –

+0

@IndraBasak Terminé –

+0

Répondu avec un exemple de travail. –

Répondre

0

Pour rendre votre exemple de travail, vous devez changer votre valeur de retour de caractère générique, ResponseEntity<?>, à une classe concrète, ResponseEntity<List<Rejection>>. En outre, vous devez modifier responseContainer en List à partir de Set.

@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); 
    }