Avec JSR 311 et ses implémentations, nous avons un standard puissant pour exposer des objets Java via REST. Cependant, du côté client, il semble qu'il manque quelque chose qui soit comparable à Apache Axis pour SOAP - quelque chose qui cache le service Web et rassemble les données de manière transparente vers les objets Java.
Comment créez-vous des clients Java RESTful? Vous utilisez HTTPConnection et l'analyse manuelle du résultat? Ou des clients spécialisés pour par exemple Jersey ou Apache CXR?
Réponses:
C'est une vieille question (2008) donc il y a beaucoup plus d'options maintenant qu'il n'y en avait alors:
MISES À JOUR (projets toujours actifs en 2020):
Async-http-client par Sonatype.Une mise en garde sur la sélection des clients HTTP / REST. Assurez-vous de vérifier ce que votre pile d'infrastructure utilise pour un client HTTP, comment elle effectue le threading et, idéalement, utilisez le même client s'il en propose un. C'est-à-dire que si vous utilisez quelque chose comme Vert.x ou Play, vous voudrez peut-être essayer d'utiliser son client de support pour participer à la boucle de bus ou de réacteur fournie par le framework ... sinon préparez-vous à des problèmes de threading potentiellement intéressants.
la source
Comme je l'ai mentionné dans ce fil, j'ai tendance à utiliser Jersey qui implémente JAX-RS et est livré avec un bon client REST. La bonne chose est que si vous implémentez vos ressources RESTful à l'aide de JAX-RS, le client Jersey peut réutiliser les fournisseurs d'entités tels que JAXB / XML / JSON / Atom et ainsi de suite - afin que vous puissiez réutiliser les mêmes objets côté serveur que vous utiliser sur le test unitaire côté client.
Par exemple, voici un cas de test unitaire du projet Apache Camel qui recherche les charges utiles XML à partir d'une ressource RESTful (à l'aide de l'objet JAXB Endpoints). La méthode resource (uri) est définie dans cette classe de base qui utilise uniquement l'API client Jersey.
par exemple
BTW J'espère que la future version de JAX-RS ajoutera une belle API côté client le long de celle de Jersey
la source
Vous pouvez utiliser les API Java SE standard:
Ou vous pouvez utiliser les API client REST fournies par les implémentations JAX-RS telles que Jersey. Ces API sont plus faciles à utiliser, mais nécessitent des fichiers JAR supplémentaires sur votre chemin de classe.
Pour plus d'informations, voir:
la source
Si vous souhaitez uniquement invoquer un service REST et analyser la réponse, vous pouvez essayer Rest Assured
la source
Vous pouvez également vérifier Restlet qui a des capacités côté client complètes, plus orientées REST que les bibliothèques de niveau inférieur telles que HttpURLConnection ou Apache HTTP Client (que nous pouvons exploiter en tant que connecteurs).
Cordialement, Jerome Louvel
la source
Vous pouvez essayer Rapa . Faites-nous part de vos commentaires à ce sujet. Et n'hésitez pas à enregistrer les problèmes ou les fonctionnalités attendues.
la source
Je voudrais souligner 2 autres options:
la source
Essayez
JdkRequest
depuis jcabi-http (je suis développeur). Voilà comment cela fonctionne:Consultez cet article de blog pour plus de détails: http://www.yegor256.com/2014/04/11/jcabi-http-intro.html
la source
J'ai récemment essayé Retrofit Library de square, c'est génial et vous pouvez appeler votre API de repos très facilement. La configuration basée sur les annotations nous permet de nous débarrasser de beaucoup de codage des plaques de chaudière.
la source
J'utilise Apache HTTPClient pour gérer tout le côté HTTP des choses.
J'écris des analyseurs XML SAX pour le contenu XML qui analyse le XML dans votre modèle d'objet. Je crois que Axis2 expose également XML -> Méthodes de modèle (Axis 1 a caché cette partie, de manière ennuyeuse). Les générateurs XML sont trivialement simples.
Il ne faut pas longtemps pour coder, et c'est assez efficace, à mon avis.
la source
OkHttp est également léger et puissant lorsqu'il est combiné avec Retrofit. Cela fonctionne bien pour une utilisation générale de Java ainsi que sur Android.
OkHttp : http://square.github.io/okhttp/
Rénovation : http://square.github.io/retrofit/
la source
Puisque personne n'a mentionné, voici un autre: Feign , qui est utilisé par Spring Cloud .
la source
Bien qu'il soit simple de créer un client HTTP et de faire une demande. Mais si vous souhaitez utiliser certains clients générés automatiquement, vous pouvez utiliser WADL pour décrire et générer du code.
Vous pouvez utiliser RestDescribe pour générer et compiler WSDL, vous pouvez générer des clients en php, ruby, python, java et C # en utilisant cela. Il génère du code propre et il y a un bon changement que vous devez modifier un peu après la génération du code, vous pouvez trouver une bonne documentation et des réflexions sous-jacentes derrière l'outil ici .
Il y a peu d' outils WADL intéressants et utiles mentionnés sur Wintermute.
la source
J'ai écrit une bibliothèque qui mappe une interface java à un service JSON REST distant:
https://github.com/ggeorgovassilis/spring-rest-invoker
la source
J'ai utilisé RestAssured la plupart du temps pour analyser la réponse du service de repos et tester les services. Outre Rest Assured, j'ai également utilisé les bibliothèques ci-dessous pour communiquer avec les services Resful.
une. Client de Jersey Rest
b. Spring RestTemplate
c. Client HTTP Apache
la source
Essayez de regarder http-rest-client
https://github.com/g00dnatur3/http-rest-client
Voici un exemple simple:
La bibliothèque s'occupe de la sérialisation et de la liaison json pour vous.
Voici un autre exemple,
Et un dernier exemple,
À votre santé!
la source
Exemples de jersey Rest client:
Ajout de dépendance:
ForGetMethod et en passant deux paramètres:
GetMethod transmettant un paramètre et obtenant une remise à jour de la liste:
In Above It renvoie une liste que nous acceptons en tant que liste, puis la convertissons en tableau Json puis en tableau Json en liste.
Si Post Request passe un objet Json comme paramètre:
la source
J'utilise actuellement https://github.com/kevinsawicki/http-request J'aime leur simplicité et la façon dont les exemples sont présentés, mais surtout j'ai été vendu quand j'ai lu:
qui a réglé certains problèmes sur un projet java 1.6. Quant au décodage de json en objets, gson est juste invincible :)
la source