Rückgabe HTTP Statuscode 204 auf null mit spring @RestController
Dieser gibt 200 OK Content-Length: 0
@RestController
public class RepoController {
@RequestMapping(value = "/document/{id}", method = RequestMethod.GET)
public Object getDocument(@PathVariable long id) {
return null;
}
}
Einfach gesagt ich möchte es zurückgeben 204 No Content auf null.
Gibt es eine Möglichkeit zu zwingen, spring-mvc/rest zurück 204 auf null-nicht 200? Ich will nicht zu ändern, jede rest-Methode zurück ResponseEntity oder sowas, nur die Karte null 204
InformationsquelleAutor user1606576 | 2015-09-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Natürlich, ja.
Option 1 :
Option 2 :
Haben könnte Tippfehler, aber Sie bekommen die Idee.
Leider wird keine dieser Optionen ist eine gute (saubere) Lösung. Idealerweise ist Ihr controller-Methode liefert einen typisierten Objekt eher als
Object
oderResponseEntity
, und es wäre eine Art von intercepter, die bemerken würde, dass Sie null zurückgeben, und legen Sie dieNO_CONTENT
status-code (oder war ich einfach verwöhnt von Jersey und RESTEasy).InformationsquelleAutor Karthik R
Können Sie die @ResponseStatus annotation. Auf diese Weise können Sie eine void-Methode, und Sie nicht haben, um zu bauen ein ResponseEntity.
BTW Rückkehr 200, wenn das Objekt vorhanden ist und 204 ansonsten ist es etwas ungewöhnlich bezüglich API-REST-design. Es ist üblich, erzeugen einen 404 (nicht gefunden), wenn das angeforderte Objekt nicht gefunden. Und dies kann erreicht werden durch eine ControllerAdvice.
Im Frühjahr RUHE, es ist besser, die Ausnahmen behandeln mit einem Exception-handler, anstatt die Logik zu entscheiden, der Antwort-status, etc. Dies ist ein Beispiel zur Verwendung der @ControllerAdvice Anmerkung: http://www.jcombat.com/spring/exception-handling-in-spring-restful-web-service
Ich Stimme mit @Jean-FrançoisBeauchef. Dies ist nicht der richtige Umgang. Diese Antwort status angewendet wird, unabhängig vom Ergebnis (ohne Ausnahme-Szenario). Der Fragesteller wollte wissen, wie gerecht Zustand von
null
Sorry, aber ich bin nicht einverstanden. Bei der Verwendung von Spring REST, es ist besser, die Behandlung von Ausnahmen und Antwort-codes mit einem Exception-handler. Dies ist ein Beispiel jcombat.com/spring/...
ja, natürlich. Sollten Sie eine exception-handler, um eine Ausnahme behandeln. Aber das ist nicht das, was der OP fragte. Er wollte schon wieder 200 auf einer richtigen Antwort mit dem Inhalt, und 204 (das ist auch eine richtige Antwort), wenn es keinen Inhalt (oder null, wenn Sie bevorzugen). Die OP gar nicht erwähnen Ausnahmen. Und in Java (Spring oder anderweitig), Ausnahmen sollten nicht verwendet werden zur Steuerung des Datenflusses.
Blick auf die Antworten von mahieus und Marek Raszewski. Sie werden verstehen, was der OP war für das Schießen.
InformationsquelleAutor spekdrum
Löste ich dieses problem mit einem filter. Es ist global und einfach.
und fügen Sie den folgenden in Ihre web.xml
Sehr schöne Lösung
InformationsquelleAutor mahieus
Können Sie versuchen, diese :
Uou ändern müssen, HttpStatus.BAD_REQUEST mit dem äquivalent für 204 code status
InformationsquelleAutor Bilal BBB
Gleiche Antwort aber gelöst durch AOP:
Versuchen Sie, um eine statische Methode zum abrufen HttpServletResponse wie here Der rest sollte gleich sein aber der @Pointcut erstrecken sollte, die nur leere Methoden.
InformationsquelleAutor Marek Raszewski