Dans mon opération REST API PATCH, j'utilise la version 3. swagger-annotation:2.0.6
J'essayais d'ajouter plus d'exemples comme schéma swagger pour mon opération de patch. PATCH /users/id
.
Corps de la demande :
{
"operationList": [
{
"op": "replace",
"path": "/username",
"value": "john1991"
}
]
}
Actuellement, j'ai la classe suivante pour le modèle de demande.
public class UserPatchOp extends PatchOperation {
@Override
@Schema(description = "some description", example = "replace", required = true)
public PatchOperator getOp() {
return super.getOp();
}
@Override
@Schema(description = "some description", example = "/username", required = true)
public String getPath() {
return super.getPath();
}
@Override
@Schema(description = "some description", , example = "john1991", required = true)
public Object getValue() {
return super.getValue();
}
}
Dans PatchOperation.java
public class PatchOperation {
/**
* {@link PatchOperator} operation to be performed
*/
@Schema(description = "Operation to be performed", required = true)
@JsonProperty
@NotNull
private PatchOperator op;
@Schema(description = "Path to target where operation will be performed", required = true)
@JsonProperty
@Pattern(regexp = "/([/A-Za-z0-9~])*-*", message = "Invalid path. Please follow regex pattern")
private String path;
@Schema(description = "Value used by operation")
@JsonProperty
private Object value;
public PatchOperation() {
}
}
Dans le document swagger, dans UserPatchOp.java
J'ai montré à l'utilisateur final comment remplacer le nom d'utilisateur. Sur swagger, la bogie de demande vient avec cet exemple.
autre que le nom d'utilisateur à travers cette opération de patch, l'utilisateur final peut mettre à jour la description alors le chemin sera /description
.
L'utilisateur final peut également mettre à jour le groupe d'utilisateurs auquel il appartient dans '/usergroups'. Donc, en général, de la même manière, je veux ajouter plus d'exemples au schéma swagger. Mais je ne suis pas en mesure de le faire. Parce qu'à un moment donné, je ne peux montrer qu'un seul exemple.
Je veux montrer les opérations multiples suivantes au client sur une page swagger.
{
"operationList": [
{
"op": "replace",
"path": "/username",
"value": "john1991"
},
{
"op": "remove",
"path": "/description"
},
{
"op": "add",
"path": "/memberships"
"value":["1224","8907"]
}
]
}
Et la méthode du point d'entrée est
@PATCH
@Path("users/{id}")
@Consumes({MediaType.APPLICATION_JSON, APPLICATION_JSON_PATCH_JSON})
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = MessageConstants.OK, content = @Content(schema = @Schema(implementation = UserInfo.class))),
@ApiResponse(responseCode = "500", description = MessageConstants.SERVER_ERROR, content = @Content(schema = @Schema(implementation = RestError.class))),
@ApiResponse(responseCode = "400", description = MessageConstants.BAD_REQUEST, content = @Content(schema = @Schema(implementation = RestError.class))),
@ApiResponse(responseCode = "401", description = MessageConstants.UNAUTHORIZED, content = @Content(schema = @Schema(implementation = RestError.class))),
@ApiResponse(responseCode = "404", description = MessageConstants.NOT_FOUND, content = @Content(schema = @Schema(implementation = RestError.class)))})
public Response updatePartialUser(
@Parameter(description = "User Id", required = true) @PathParam("id") String id,
@Parameter(description = "User Update Info", required = true) @Valid PatchOperations<UserPatchOperation> operationList) {
Existe-t-il un moyen d'ajouter plusieurs exemples pour les méthodes getOP, getPath et getValue ? Merci.
0 votes
Oui, parce que c'est ainsi qu'il faut procéder. Si vous voulez supprimer le nom d'utilisateur, vous devez créer une méthode avec @ DeleteMapping, pour ajouter le nom d'utilisateur avec @ PostMapping, pour l'obtenir avec @ GetMapping Ainsi, à la fin, vous aurez 3+ méthodes avec le point de terminaison /nom d'utilisateur. Lisez cet article, peut-être qu'il vous éclairera : blog.logrocket.com/
0 votes
@Szprota21 Merci pour votre réponse. J'ai mis à jour ma question en conséquence. J'ai une opération de patch qui est responsable de la mise à jour de la ressource que j'ai comme le nom d'utilisateur, la description et le groupe d'utilisateurs. Il faut que je montre plusieurs exemples dans le schéma swagger.