2017-05-03 2 views
2

Ich habe SpringFox-Bibliothek für Ruhe Dokumentation meiner Spring-Boot-App verwendet. Wenn ich auf Modell klicke, werden alle Elemente als optional zurückgegeben. Gibt es eine Möglichkeit, erforderliche Elemente als obligatorisch anzuzeigen? Gibt es eine zusätzliche Konfiguration, die hinzugefügt werden muss?SpringFox Swagger - Optionale und obligatorische Felder in Modell

Antwort

3

Ja standardmäßig Alle th Die Felder sind optional. Um ein Feld nach Bedarf zu markieren, können Sie folgende Anmerkung verwenden.

@ApiModelProperty(required = true) 

Auf die Getter-Methode des Feldes, das erforderlich sein sollte. Dies zeigt das Feld nicht als "obligatorisch" an. Aber das optionale Tag wird für dieses Feld in der Dokumentation entfernt.

Hoffe, das hilft.

+0

Danke @Ganesh. –

1

Versuchen Sie, die einen ähnlichen Code in Swagger Konfiguration:

@Bean 
public Docket api() { 

    List<ResponseMessage> list = new java.util.ArrayList<>(); 
    list.add(new ResponseMessageBuilder().code(500).message("500 message") 
      .responseModel(new ModelRef("JSONResult«string»")).build()); 
    list.add(new ResponseMessageBuilder().code(401).message("Unauthorized") 
      .responseModel(new ModelRef("JSONResult«string»")).build()); 

    return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any()) 
      .paths(PathSelectors.any()).build().securitySchemes(Collections.singletonList(securitySchema())) 
      .securityContexts(Collections.singletonList(securityContext())).pathMapping("/") 
      .directModelSubstitute(LocalDate.class, String.class).genericModelSubstitutes(ResponseEntity.class) 
      .alternateTypeRules(newRule(
        typeResolver.resolve(DeferredResult.class, 
        typeResolver.resolve(ResponseEntity.class, WildcardType.class)), 
        typeResolver.resolve(WildcardType.class))) 
      .useDefaultResponseMessages(false).apiInfo(apiInfo()).globalResponseMessage(RequestMethod.GET, list) 
      .globalResponseMessage(RequestMethod.POST, list); 
} 

Und in der Controller-Mapping @RequestBody @Valid MyRequestClass req beispielsweise hinzufügen, wenn Sie Objekte in der Anfrage Körper sind vorbei, und wenn Sie Gabe von Parametern hinzufügen etwas wie @RequestParam(value = "email", required = true, defaultValue = "") String email

siehe

auch, wie in dem Config-Code, wie eine Klasse mit generischem Typ verweisen, dh "JSONResult«string»" die verweisen JSONResult<String>

+0

Dank @Hasson. Wie kann ich in der Option, in der ich ein Java-Objekt übergebe, angeben, welches Feld mit dieser Konfiguration obligatorisch/optional ist? –

+0

Nicht sicher, ob Swagger so tief gehen wird, aber Sie können versuchen mit '@NotEmpty' und '@NotNull' für die Felder in dem Objekt, das Sie übergeben. – Hasson

+0

@PunterVicky Wie in @ Ganeshs Antwort darauf hingewiesen. Sie können Ihr Modell mit '@ApiModelProperty (required = true) annotieren' oder es mit der Anmerkung '@ NotNull' von javax annotieren. –

Verwandte Themen