Outils pour utilisateurs

Outils du site


lang:java:rest

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
lang:java:rest [2017/01/09 00:04] – Ajout de quelques exemples (upload, download) rootlang:java:rest [2020/04/27 11:48] (Version actuelle) – maff -> html root
Ligne 5: Ligne 5:
 Dans l'exemple ci-dessous, il faut aussi pour Tomcat et le projet la librairie [[https://github.com/stleary/JSON-java|java-json.jar]] (à mettre dans le dossier ''WebContent/lib'') qui facilitera la réponse au client. Dans l'exemple ci-dessous, il faut aussi pour Tomcat et le projet la librairie [[https://github.com/stleary/JSON-java|java-json.jar]] (à mettre dans le dossier ''WebContent/lib'') qui facilitera la réponse au client.
  
-Attention, j'ai eu personnellement beaucoup de mal à faire fonctionner REST sur Eclipse. On pense que tout est bien configurer et ça ne marche pas pendant des heures. Puis d'un coup, on a l'impression que le projet tombe en marche miraculeusement… O_o+Attention, j'ai eu personnellement beaucoup de mal à faire fonctionner REST sur Eclipse. On pense que tout est bien configuré et ça ne marche pas pendant des heures. Puis d'un coup, on a l'impression que le projet tombe en marche miraculeusement… O_o
  
 J'ai réussi plusieurs fois à faire fonctionner REST sans que ''JAX-RS'' soit activé dans ''Project Facets'' mais jamais avec. Donc prudence. Pareil, avec ''@Path'' mais avec ''@ApplicationPath'' ça ne marche pas (oui, j'ai bien fait hérité de la classe ''Application''). J'ai réussi plusieurs fois à faire fonctionner REST sans que ''JAX-RS'' soit activé dans ''Project Facets'' mais jamais avec. Donc prudence. Pareil, avec ''@Path'' mais avec ''@ApplicationPath'' ça ne marche pas (oui, j'ai bien fait hérité de la classe ''Application'').
Ligne 43: Ligne 43:
   // Méthode GET   // Méthode GET
   @GET   @GET
-  // Requête XML+  // Mime Type en sortie
   @Produces(MediaType.APPLICATION_XML)   @Produces(MediaType.APPLICATION_XML)
-  // Requête XML+  // Mime Type en entrée
   @Consumes(MediaType.APPLICATION_XML)   @Consumes(MediaType.APPLICATION_XML)
   // On dit que le f est extrait du path et que c'est un double.   // On dit que le f est extrait du path et que c'est un double.
Ligne 114: Ligne 114:
 } }
 </file> </file>
 +Utilisation d'un Bean pour architecturer ces données
 +<code java>
 +public class MyBeanParam {
 +  @PathParam("p")
 +  private String pathParam;
 + 
 +  @MatrixParam("m")
 +  @Encoded
 +  @DefaultValue("default")
 +  private String matrixParam;
 + 
 +  @HeaderParam("header")
 +  private String headerParam;
 + 
 +  private String queryParam;
 + 
 +  public MyBeanParam(@QueryParam("q") String queryParam) {
 +    this.queryParam = queryParam;
 +  }
 + 
 +  public String getPathParam() {
 +    return pathParam;
 +  }
 +}
 +
 +
 +
 +
 +@POST
 +public void post(@BeanParam MyBeanParam beanParam, String entity) {
 +    final String pathParam = beanParam.getPathParam(); // contains injected path parameter "p"
 +    ...
 +}
 +</code>
 +[[https://eclipse-ee4j.github.io/jersey.github.io/documentation/latest/jaxrs-resources.html|JAX-RS Application, Resources and Sub-Resources]] {{ :lang:java:rest:chapter_3._jax-rs_application_resources_and_sub-resources_2020-04-27_11_48_03_am_.html |Archive du 02/03/2020 le 27/04/2020}}
  
 <file html web.xml> <file html web.xml>
 <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
-<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
 +  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
   <display-name>REST</display-name>   <display-name>REST</display-name>
   <welcome-file-list>   <welcome-file-list>
Ligne 143: Ligne 179:
 </web-app> </web-app>
 </file> </file>
 +
 +====Exemple de client====
 +<code java>
 +import java.net.URI;
 +
 +import javax.ws.rs.client.Client;
 +import javax.ws.rs.client.ClientBuilder;
 +import javax.ws.rs.client.WebTarget;
 +import javax.ws.rs.core.MediaType;
 +import javax.ws.rs.core.Response;
 +
 +public class ClientJersey {
 +  public static void delete() {
 +    String url = "http://localhost:8080/client/del/0";
 +    URI uri = URI.create(url);
 +
 +    final Client client = ClientBuilder.newClient();
 +    WebTarget webTarget = client.target(uri);
 +
 +    Response response = webTarget.request().delete();
 +
 +    if (response.getStatus() != 200) {
 +      throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
 +    }
 +
 +    System.out.println("Output delete from Server .... \n" + response.getStatus());
 +  }
 +
 +  public static void main(String[] args) {
 +    try {
 +      delete();
 +
 +      String url = "http://localhost:8080/helloworld/xml";
 +      URI uri = URI.create(url);
 +
 +      final Client client = ClientBuilder.newClient();
 +      WebTarget webTarget = client.target(uri);
 +
 +      Response response = webTarget.request(MediaType.APPLICATION_XML).get();
 +
 +      if (response.getStatus() != 200) {
 +        throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
 +      }
 +
 +      String output = response.readEntity(String.class);
 +
 +      System.out.println("Output XML from Server .... \n");
 +      System.out.println(output);
 +    } catch (Exception e) {
 +      e.printStackTrace();
 +    }
 +  }
 +}
 +</code>
  
 =====Erreurs===== =====Erreurs=====
lang/java/rest.1483916687.txt.gz · Dernière modification : 2017/01/09 00:04 de root