Umgang mit RESTful Löschen in Spring MVC

7

Wie verwende ich korrekt RESTful Löschen in Spring MVC Controller? Ich habe DAO, das Boolean zurückgibt, wenn ich versuche, ein Element zu löschen.

Ich versuche, das Element zu löschen. Wenn alles in Ordnung war, zeige nur die Liste der Gegenstände an (der gelöschte Gegenstand ist nicht mehr da). Wenn das Element nicht entfernt werden kann, navigieren Sie zur Detailseite und sagen Sie, warum es nicht gelöscht werden konnte.

Brauche ich einen speziellen Antwortstatus oder so? Ist mein Ansatz RESTful?

%Vor%     
Xorty 26.04.2012, 20:01
quelle

2 Antworten

10

Wenn Sie die Probleme mit einem Löschen vom Benutzer behoben werden können, scheint dies in Ordnung zu sein. Wenn es nichts gibt, was der Benutzer tun kann, wäre vielleicht ein Fehlercode-Status korrekter. Der einzige Fehler, den ich mir für eine Löschung vorstellen könnte, wäre ein Autorisierungsfehler, der eine 401 wäre. Dies könnte durch Hinzufügen eines Parameters zu Ihrer Methode 'HttpServletResponse response' eingestellt werden. Ihr Code würde etwa so aussehen:

%Vor%

Sie können andere Statuscodes entsprechend ersetzen, aber das ist die allgemeine Idee.

Sie könnten auch etwas wie:

tun %Vor%

Und dann haben Sie einen annotierten Fehlerhandler in der gleichen Klasse

%Vor%     
Kodi 26.04.2012, 20:25
quelle
16

Sie sollten HTTP-Statuscodes verwenden, um anzugeben, ob der Löschvorgang erfolgreich ist oder nicht anstatt Weiterleitungen. Zum Beispiel HTTP 200 OK (oder HTTP 204 No Content ), um anzuzeigen, dass die Operation erfolgreich war, und HTTP 404 Not Found , wenn die Ressource, auf die Sie zugreifen möchten, nicht vorhanden ist, HTTP 405 Method Not Allowed , wenn die Löschoperation nicht zulässig ist, usw. Basierend auf Im Antwortstatus kann der Client entscheiden, ob die referenzierte Ressource beibehalten werden soll (in Ihrem Fall das Objekt, auf das von item/{id} verwiesen wird).

Da Sie Spring verwenden, können Sie Ihre Controller-Methoden mit einem geeigneten @ResponseStatus , z @ResponseStatus(value = HttpStatus.NO_CONTENT)

Darüber hinaus stellt Spring HandlerExceptionResolver bereits einige Statuscodes zur Verfügung. Standard .

    
matsev 26.04.2012 20:12
quelle

Tags und Links