In meiner Spring Boot-Anwendung, ich versuche, eine Antwort auf meine Antwort in der afterCompletion()
Methode meiner HandlerInterceptorAdapter
Klasse hinzuzufügen.Wie Header zu HTTP-Antwort in Spring HandlerInterceptorAdapter hinzufügen?
Der Regler liefert ein ResponseEntity<MyResource>
Objekt wie:
return new ResponseEntity<>(mr, HttpStatus.OK);
nach einem POST
Anfrage.
Im Interceptor, wenn ich versuche, der Antwort einen Header hinzuzufügen, wird es nicht hinzugefügt.
Allerdings, wenn ich meinen Controller eine Antwort als diese zurück ändern:
return new ResponseEntity<>(HttpStatus.OK);
Dann funktioniert es.
Warum könnte ich nur dann eine Kopfzeile hinzufügen, wenn der Antworttext fehlt?
Gibt es eine Möglichkeit, es hinzuzufügen, wenn der Antworttext vorhanden ist?
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-handlermapping-interceptor –
Beachten Sie, dass die Methode 'afterCompletion' von' HandlerInterceptor' nicht immer ideal geeignet ist zur Verwendung mit den Methoden '@ ResponseBody' und' ResponseEntity'. In solchen Fällen schreibt ein 'HttpMessageConverter' die Antwort, bevor 'afterCompletion' aufgerufen wird, und schreibt sie fest, was es unmöglich macht, die Antwort zu ändern, um beispielsweise einen Header hinzuzufügen. Stattdessen kann eine Anwendung 'ResponseBodyAdvice' implementieren und entweder als' @ ControllerAdvice'-Bean deklarieren oder direkt auf 'RequestMappingHandlerAdapter' konfigurieren. –