Dropwizard utilise Jersey pour le marshalling HTTP<->Java POJO. Vous pourriez utiliser les diverses annotations de Jersey @*Param
(@FormParam, @QueryParam, etc.) pour certains des paramètres.
Si vous avez besoin d'utiliser map/marshall vers/depuis des POJOs Java, jetez un coup d'œil à l'application cas de test dans le Dropwizard :
@Path("/valid/")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class ValidatingResource {
@POST
@Path("foo")
@Valid
public ValidRepresentation blah(@NotNull @Valid ValidRepresentation representation, @QueryParam("somethingelse") String xer) {
return new ValidRepresentation();
}
Ceci définit un point final d'API répondant à la méthode HTTP POST qui attend l'objet ValidRepresentation et "somethingelse" comme paramètre de requête de la méthode HTTP. Le point de terminaison répondra UNIQUEMENT s'il reçoit des paramètres JSON et ne renverra que des objets JSON (@Products et @Consumes au niveau de la classe). Le @NotNull exige que l'objet soit obligatoire pour que l'appel réussisse et le @Valid demande à Dropwizard d'appeler le validateur Hibernate pour valider l'objet avant d'appeler le point de terminaison.
La classe ValidRepresentation est aquí :
package io.dropwizard.jersey.validation;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.NotEmpty;
public class ValidRepresentation {
@NotEmpty
private String name;
@JsonProperty
public String getName() {
return name;
}
@JsonProperty
public void setName(String name) {
this.name = name;
}
}
Le POJO utilise les annotations Jackson pour définir à quoi doit ressembler la représentation JSON de cet objet. @NotEmtpy est une annotation du validateur Hibernate.
Dropwizard, Jersey et Jackson s'occupent des détails. Donc pour les trucs de base, c'est tout ce dont vous avez besoin.