[JAVA] Embouts JAX-RS (Jersey)

Recevoir les paramètres en tant que membres de la classe de ressources

En plus de définir @ HeaderParam, @ PathParam et @ QueryParam individuellement dans chaque méthode de ressource, ils peuvent être injectés en fonction du constructeur et stockés dans les membres de la classe de ressources (si la classe de ressources n'est pas Singleton).

Cependant, le corps (entité) et @FormParam (faisant référence au corps) ne peuvent pas être injectés dans le constructeur et doivent être reçus comme argument de la méthode de ressource.

class Resource {
    Resource(@PathParam("path") String pathParam) { ... }
}
référence

Accéder aux informations de requête HTTP sans utiliser HttpServletRequest

Afin de faire référence aux informations de requête HTTP brutes (méthode HTTP, chemin, paramètre de requête, en-tête, corps du format de flux) dans la méthode de ressource, il est facile d'utiliser HttpServletRequest comme injection de dépendance.

class Resource {
	@Inject
	private HttpServletRequest request;
}

Cependant, cette méthode dépend du conteneur Servlet, donc pour gérer avec l'API JAX-RS, procédez comme suit.

class Resource {
  @Context Request request;
  @Context UriInfo uriInfo;
  @Context HttpHeaders httpHeaders;

  public Response post(InputStream body) {
    //Méthode HTTP
    request.getMethod();
    //chemin
    uriInfo.getPath();
    //Paramètres de requête
    uriInfo.getQueryParameters();
    //entête
    httpHeaders.getRequestHeaders();
    //Corps (InputStream)
    body;
    ...
  }
}

Recommended Posts

Embouts JAX-RS (Jersey)
Astuces Java, astuces
Conseils de rails
Astuces Java
Présentation des applications Zipkin to Jersey (JAX-RS2)