JAX-RS est parfait pour la mise en œuvre REST. Qu'est-ce que vous utilisez pour appeler les services REST en Java? [fermé]

StackOverflow https://stackoverflow.com/questions/923566

  •  06-09-2019
  •  | 
  •  

Question

Idéalement, je cherche quelque chose comme JAX-RS (à l'aide d'annotations pour décrire les services que je veux appeler), mais permettant d'appeler les services REST mis en œuvre en utilisant d'autres technologies (pas JAX-RS). Toute suggestion?

Était-ce utile?

La solution

Vous avez écrit dans un commentaire que vous avez été « espériez quelque chose de plus haut niveau » que HttpClient. Cela ressemble à Restlet serait parfait. Il fournit une API de haut niveau pour la mise en œuvre et en utilisant RESTful applications web, avec des adaptateurs plug-and-play pour les implémentations de niveau inférieur.

Par exemple, pour poster un formulaire en ligne à une ressource en utilisant Restlet 1.1:

Client client = new Client(Protocol.HTTP);

Form form = new Form();
form.add("foo", "bar");
form.add("abc", "123");

Response response = client.post("http://host/path/to/resource", form.getWebRepresentation())

if (response.getStatus().isError()) {
    // deal with the error
    return;
}

if (response.isEntityAvailable()) {
    System.out.println(response.getEntity().getText());
}

Si vous devez définir plus d'options sur la demande, vous pouvez utiliser un objet de demande:

Form form = new Form();
form.add("foo", "bar");
form.add("abc", "123");

Request request = new Request(Method.POST, "http://host/path/to/resource");

request.setEntity(form.getWebRepresentation());

request.setReferrerRef("http://host/path/to/referrer");

Response response = client.handle(request);

HTH!

Autres conseils

JAX-RS (JSR311) ne définit pas une API client, mais la plupart JAX-RS implémentations ont un, comme Jersey , rESTeasy ou Apache CXF . Le cadre Restlet a également le soutien à la clientèle ainsi qu'un HTTP d'extension client.

Je vous suggère de regarder Puisque ce sont des bibliothèques / cadres spécialisés pour REST, dans ces derniers.

Je vous suggère de jeter un oeil à la projet WADL . WADL est REPOS ce que WSDL est de SOAP.

Vous devez d'abord définir l'interface REST à l'aide WADL. Ensuite, vous pouvez exécuter l'outil wadl2java sur elle pour générer des souches de client pour le reste appelle.

Une fois que vous avez le WADL pour un service Web, vous pouvez mettre en œuvre des outils qui font d'autres choses avec aussi bien, par exemple générer des talons de côté serveur, générer de la documentation, etc.

HttpClient de apache la plupart du temps (voir http: // hc .apache.org / HttpComponents-client-ga / ).

Comme Gandalf et Darrel Miller dit, HttpClient.

Vous n'avez pas besoin d'être construire XML à partir HTTP params. XML ne devrait être votre interface entre deux systèmes séparés. L'utilisation HttpClient vous met en Java avec les valeurs de chaîne à votre disposition, goinn en XML à partir de là est inutile.

Si vous allez en XML à ce stade afin d'envoyer à un autre système, vous devriez penser à déplacer les valeurs du HTTP params retour à votre logique de domaine / app avant de communiquer avec un autre système. Cela est nécessaire pour une bonne garde seperation de la logique de l'application des communications inter système.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top