Newbie question ... Je construis mon premier service reposant Spring Boot. Ma conception de service reposante nécessite que certaines données soient renvoyées dans l'en-tête de la réponse.
Comment définir les valeurs d'en-tête de réponse dans ma méthode de classe de contrôleur?
De la documentation de printemps:
@RequestMapping("/handle")
public ResponseEntity<String> handle() {
URI location = ...;
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setLocation(location);
responseHeaders.set("MyResponseHeader", "MyValue");
return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED);
}
Source: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/ResponseEntity.html
Contrairement à l'autre réponse, ne pas utiliser HttpServletResponse
. Vous ne voulez pas travailler avec des API de servlet de bas niveau si vous pouvez l'éviter. Renvoie un ResponseEntity ou HttpEntity
.
HttpHeaders headers = new HttpHeaders();
headers.add("1", "uno");
return new ResponseEntity<>(headers, HttpStatus.OK);
Je cherchais une réponse et je n'aime pas avoir à créer une entité de réponse. J'ai trouvé la solution sur les forums de printemps, merci à l'auteur.
En bref, vous pouvez demander la réponse dans la déclaration de méthode afin de pouvoir la renseigner.
Un exemple simple:
@RequestMapping(value="/car/{carId}", method = RequestMethod.Get)
@ResponseBody
public Car getCarById(@PathVariable("carId") String Id, HttpServletResponse response) {
response.setHeader("X-Special-Header", myCar.getEcoLabel());
//get the car
return myCar;
}
J'espère que cela aide les autres aussi.