Wie behandeln Erholsamen löschen in Spring MVC
Wie kann ich richtig mit Erholsamen löschen in Spring MVC-controller? Ich habe DAO boolean zurückgibt, wenn Sie versuchen, löschen Sie einige Artikel.
Ich versuche auf Element löschen. Wenn alles OK war, nur zeigen Sie die Liste der items (gelöschte Elemente nicht mehr vorhanden). Wenn das Element kann nicht entfernt werden, Umleitung auf die details-Seite und sagen, warum es konnte nicht gelöscht werden.
Brauche ich irgendwelche speziellen response-status oder sowas? Ist mein Ansatz RESTful?
@RequestMapping(value = "items/{id}", method = RequestMethod.DELETE)
public String delete(@PathVariable("id") int itemId, Model model) {
Item item = itemDao.get(id);
//true -> can delete
//false -> cannot delete, f.e. is FK reference somewhere
boolean wasOk = itemDao.delete(item);
if (wasOk) {
return "redirect:/items";
}
//will write to user which item couldn't be deleted
model.addAttribute("item", item);
return "items/error";
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die Probleme mit einem löschen kann behoben werden, indem der Benutzer, dann scheint das ok. Wenn es nichts gibt, das Benutzer tun können, dann vielleicht einen error-code status wäre korrekt. Der einzige Fehler den ich mir vorstellen kann für eine Löschung wäre eine Genehmigung Versagen, das wäre ein 401. Dies könnte durch einen parameter hinzufügen, um Ihre "Methode HttpServletResponse response'. Dein code würde so etwas wie:
Können Sie substitue anderen status-codes angebracht, aber das ist die generelle Idee.
Könnte man auch etwas wie:
Haben und dann eine kommentierte error-handler in der gleichen Klasse
new ModelAndView("errorView", "badItem", ex.getItem())
von der Steuerung, vorausgesetzt, Sie hatte eine eigene exception, die könnte halten eine Referenz auf das Element. Obwohl, das scheint ein bisschen chaotisch.Sollten Sie erwägen, die Verwendung HTTP-status-codes, um anzuzeigen, ob der Löschvorgang erfolgreich, eher als Umleitungen. Zum Beispiel
HTTP 200 OK
(oderHTTP 204 No Content
), um anzuzeigen, dass der Vorgang erfolgreich war, undHTTP 404 Not Found
wenn die Ressource, die Sie zugreifen möchten, nicht vorhanden ist, wirdHTTP 405 Method Not Allowed
wenn der Löschvorgang ist nicht erlaubt, etc. Basierend auf der Antwort-status, kann der client entscheiden, ob oder nicht zu halten, die referenzierte Ressource (in deinem Fall das Objekt, auf das verwiesen wird, die vonitem/{id}
).Da Sie mit Spring, können Sie Anmerkungen controller-Methoden mit einer entsprechenden @ResponseStatus, z.B.
@ResponseStatus(value = HttpStatus.NO_CONTENT)
Zusätzlich, Frühling
HandlerExceptionResolver
bietet bereits einige status-codes durch Standard.items/{id}
, dass es beabsichtigt, zu löschen, siehe mein update.