2016-05-05 4 views
0

angezeigt werden Ich verwende Swagger2 mit Springfox und Spring Boot. Ich habe einen Endpunkt wie so definiert:ID sollte nicht für Modellschema mit Swagger + Spring

@ApiOperation(value = "save", nickname = "Save Store") 
@ApiResponses(value = { 
     @ApiResponse(code = 201, message = "Created"), 
     @ApiResponse(code = 401, message = "Unauthorized"), 
     @ApiResponse(code = 403, message = "Forbidden"), 
     @ApiResponse(code = 500, message = "Failure", response = ErrorResource.class)}) 
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) 
@ResponseStatus(HttpStatus.CREATED) 
public void save(@Valid @RequestBody Store store, BindingResult bindingResult, HttpServletRequest request, HttpServletResponse response) { 
    if (bindingResult.hasErrors()) { 
     throw new InvalidRequestException("Invalid Store", bindingResult); 
    } 

    this.storeService.save(store); 
    response.setHeader("Location", request.getRequestURL().append("/").append(store.getId()).toString()); 
} 

Die erzeugten API-Dokumente sind, um die von idStore im Modellschema zeigt. Technisch gesehen sollte der JSON beim Erstellen einer Store nicht die id enthalten. Ich versuche herauszufinden, wie Swagger/Springfox die id ignorieren kann, aber nur für diesen Endpunkt.

Antwort

0

Sie können mit Anmerkungen versehen, die Eigenschaft der Klasse mit @ApiModelProperty gesetzt und seine verstecken Eigenschaft auf true ein Feld aus einem Modell verstecken.

Leider verstecken Sie das ID-Feld auf jedem Endpunkt, der die Store-Klasse als Eingabe verwendet. Das Anzeigen des Felds für einen anderen Endpunkt würde eine separate Klasse erfordern.

+0

Ja, das ist nicht was ich brauche. Ich habe es gestern mit '@ JsonView' herausgefunden. Ich werde meine eigene Antwort in Kürze veröffentlichen. Danke für den Vorschlag. – Gregg

+0

Was hast du an diesem @Gregg gemacht? JsonView scheint nicht zu funktionieren. – NeilS

Verwandte Themen