La gestion simultanée de plusieurs valeurs pour une seule requête de paramètre dans une url du webservice et de la manipulation de l'utilisation d'hibernate critères
J'ai un service web rest qui accepterait " nom " et de récupérer les jetons de la db avec ce nom et retourner les jetons de retour.
L'url pour le reste webservice serait:
http://localhost:8080/NameService/Tokens?name=Bob
et dans le serviceLayer, j'ai ma méthode comme suit:
@GET
@Path("Tokens")
@Produces("application/xml")
public JAXBElement<GetToken> getokenByName(@QueryParam("name") final String name ) {
if(name!=null){
//use hibernate criteria to fetch the records from db
Criteria crit = getSession().createCriteria(getPersistentClass());
crit.add(Restrictions.eq("name",name))
}
}
Maintenant, nous avons un changement dans les exigences lorsque le client peut envoyer plusieurs noms dans la demande en même temps.Par exemple, donnez-moi les jetons, où name = "bob" ou "brendon" ou "aaron"
L'URL pourrait être comme ceci:
http://localhost:8080/NameService/Tokens?name=Bob,Aaron,Brendon
Le nombre de noms envoyé est variable. Il peut être de 1 ou 2 ou 3 etc.
Toutes les idées sur la façon de réaliser cette scission et de les transmettre à hibernate critères comme une condition OU dans la couche de service en optimisant le code indiqué ci-dessus, qui travaille pour un nom?
Une des solutions pourrait être d'utiliser StringUtils
d'analyser les différents noms à l'aide de séparateur (virgule), puis d'une liste et d'une façon ou d'ajouter les noms dans la liste des critères de restrictions. Mais pas sûr que cela fonctionne.
Des idées?
OriginalL'auteur Npa | 2012-09-13
Vous devez vous connecter pour publier un commentaire.
En effet le moyen le plus facile serait de diviser la requête à l'aide de param
split(",")
.Vous pouvez également définir votre requête de paramètre à un
List<String>
et de passer des paramètres comme ceci:Ou vous pouvez aussi les mettre en œuvre votre propre
StringReaderProvider
, et de l'inscrire à jersey.Pour votre commentaire: vous devez utiliser une disjonction.
voir mon edit
OriginalL'auteur Alex
Votre idée de scinder la chaîne de travail. Vous pouvez également vérifier la façon dont certains RESTE services sont effectuées dans l'industrie. De vérifier la linkedin personnes API de recherche
Vérifier la souplesse de la
@Path
annotation à l'aide de regex.OriginalL'auteur basiljames