JAX-RS a des annotations pour les verbes HTTP tels que GET
(@GET
) et POST
(@POST
) mais il n'y a pas d'annotation @PATCH
. Comment puis-je avoir une annotation pour le verbe HTTP PATCH
?
Quelque chose comme ce qui suit:
@PATCH
public Response someCode() {
// Code to handle the request
}
J'ai eu la réponse ici .
Il suffit de définir une annotation de correctif personnalisée, ce qui signifie que vous devrez écrire un fichier PATCH.Java avec le code suivant:
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@HttpMethod("PATCH")
public @interface PATCH {
}
Import le package contenant PATCH.Java et vous pourrez ensuite l'utiliser comme d'autres annotations de méthodes HTTP:
@PATCH
@Path("/data/{keyspace}")
@Produces({ "application/json" })
public void patchRow(@PathParam("keyspace") String keyspace, String body)
throws Exception
J'ai utilisé ce @PATCH pour envoyer du JSON à mon service REST.
JAX-RS 2.1 ajouté @PATCH
à la liste des méthodes HTTP prises en charge.
Lorsque vous utilisez Swagger pour documenter une API REST, vous pouvez utiliser l'annotation @PATCH
existante définie dans le package io.swagger.jaxrs
.
Dropwizard définit un @PATCH
annotation dans le package io.dropwizard.jersey
.
Si les approches mentionnées ci-dessus ne fonctionnent pas pour vous, vous pouvez écrire votre propre annotation @PATCH
:
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@HttpMethod("PATCH")
public @interface PATCH { }
L'annotation @HttpMethod
est utilisée pour associer le nom d'une méthode HTTP à une annotation, créant ainsi ce que la spécification JAX-RS appelle la désignation de la méthode resource.
Votre propre annotation @PATCH
devrait fonctionne correctement dans Swagger.
L'API JAX-RS 2.0.1 n'a pas PATCH. Mais, en regardant le code JAX-RS API 2.2-SNAPSHOT, PATCH est maintenant inclus. Le code est:
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@HttpMethod(HttpMethod.PATCH)
@Documented
public @interface PATCH {
}
Voici le lien .
Vous pouvez utiliser les mêmes codes pour y remédier jusqu'à ce que 2.2 soit disponible. Pour HttpMethod.PATCH, remplacez-le simplement par "PATCH".
Si vous utilisez CXF 3.1.2 ou une version ultérieure ( source ), vous pouvez utiliser org.Apache.cxf.jaxrs.ext.PATCH
.
Si vous utilisez dropwizard , il contient io.dropwizard.jersey.PATCH
. C'est exactement ce dont vous avez besoin.