Je suis nouveau dans la programmation Web en général, en particulier en Java, alors je viens d'apprendre ce qu'est un en-tête et un corps.
J'écris des services RESTful en utilisant Spring MVC. Je peux créer des services simples avec le @RequestMapping
dans mes contrôleurs. J'ai besoin d'aide pour comprendre comment obtenir des informations d'en-tête HTTP à partir d'une demande qui arrive à ma méthode dans mon contrôleur de service REST. Je voudrais analyser l'en-tête et obtenir quelques attributs.
Pourriez-vous expliquer comment je vais obtenir cette information?
Lorsque vous annotez un paramètre avec @RequestHeader
, le paramètre récupère les informations d'en-tête. Donc, vous pouvez juste faire quelque chose comme ça:
@RequestHeader("Accept")
pour obtenir l'en-tête Accept
.
Donc de la documentation :
@RequestMapping("/displayHeaderInfo.do")
public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding,
@RequestHeader("Keep-Alive") long keepAlive) {
}
Les valeurs d'en-tête Accept-Encoding
et Keep-Alive
sont fournies dans les paramètres encoding
et keepAlive
respectivement.
Et pas de soucis. Nous sommes tous noobs avec quelque chose.
Vous pouvez utiliser l'annotation @RequestHeader
avec la méthode HttpHeaders
pour accéder à tous les en-têtes de requête:
@RequestMapping(value = "/restURL")
public String serveRest(@RequestBody String body, @RequestHeader HttpHeaders headers) {
// Use headers to get the information about all the request headers
long contentLength = headers.getContentLength();
// ...
StreamSource source = new StreamSource(new StringReader(body));
YourObject obj = (YourObject) jaxb2Mashaller.unmarshal(source);
// ...
}
Ma solution dans les paramètres d'en-tête avec l'exemple est ser = "test" est:
@RequestMapping(value = "/restURL")
public String serveRest(@RequestBody String body, @RequestHeader HttpHeaders headers){
System.out.println(headers.get("user"));
}