Zusätzlich zur individuellen Definition von "@ HeaderParam", "@ PathParam" und "@ QueryParam" in jeder Ressourcenmethode können sie abhängig vom Konstruktor eingefügt und in den Mitgliedern der Ressourcenklasse gespeichert werden (wenn die Ressourcenklasse nicht Singleton ist).
Der Body (Entity) und @FormParam (bezogen auf den Body) können jedoch nicht in den Konstruktor eingefügt werden und müssen als Argument der Ressourcenmethode empfangen werden.
class Resource {
Resource(@PathParam("path") String pathParam) { ... }
}
Um in der Ressourcenmethode auf unformatierte HTTP-Anforderungsinformationen (HTTP-Methode, Pfad, Abfrageparameter, Header, Stream-Format-Body) zu verweisen, ist es einfach, "HttpServletRequest" als Abhängigkeitsinjektion zu verwenden.
class Resource {
@Inject
private HttpServletRequest request;
}
Diese Methode hängt jedoch vom Servlet-Container ab. Gehen Sie also wie folgt vor, um mit der JAX-RS-API zu verwalten.
class Resource {
@Context Request request;
@Context UriInfo uriInfo;
@Context HttpHeaders httpHeaders;
public Response post(InputStream body) {
//HTTP-Methode
request.getMethod();
//Pfad
uriInfo.getPath();
//Parameter abfragen
uriInfo.getQueryParameters();
//Header
httpHeaders.getRequestHeaders();
//Körper (InputStream)
body;
...
}
}