Zunächst hängt das Verhalten davon ab, was der DELETE-Aufruf als Antwortcode zurückgegeben hat. Wenn 200 - OK
oder 204 - No Content
zurückgegeben wird, sollte der Client 404 - Not Found
beim nächsten Aufruf von GET erhalten. Das liegt daran, dass 202 und 204 bedeuten, dass die Ressource sofort gelöscht wurde.
Wenn DELETE jedoch 202 - Accepted
zurückgibt, besteht die Möglichkeit, dass der Client die Ressource anschließend für einige Zeit erfolgreich abrufen kann. Der Grund dafür ist, dass 202 bedeutet, dass die Ressource zum Löschen markiert, aber nicht unbedingt sofort bereinigt wurde.
Zweitens, wenn ein Cache beteiligt ist, sollte das Verhalten konsistent mit dem sein, was passieren würde, wenn kein Cache vorhanden wäre. Ein erfolgreiches DELETE sollte immer dazu führen, dass neben den zwischengespeicherten Kopien auch der tatsächliche Ursprung der Daten entfernt wird.
Wenn Sie nur den Artikel gelöscht haben, warum würden Sie versuchen, es wieder "zu bekommen"? Es wird nicht existieren. Vielleicht vermisse ich etwas oder die Frage war nicht klar. –
@Brent Pabst: Betrachten Sie zum Beispiel Links in einer UI-Anwendung, wo das Löschen in einem Popup erfolgt, der GET-Link jedoch in der Eröffnungsseite ist und nicht aktualisiert oder per E-Mail übertragen wird und der Benutzer sie direkt in die Adresszeile des Browsers einfügt das löschen usw. Das unterliegt Cache! Die Idee ist, wenn der Artikel nicht mehr da ist, wie sollte das GET funktionieren. Deaktivieren Sie den gesamten Cache? Ist es akzeptabel, einen Cache zu haben? Was ist der REST-Ansatz für all das? – JohnDoDo
Das zweite GET würde natürlich den HTTP-Code '404 Not Found' zurückgeben. Caching ist eine ganz andere Sache, für die ich die wunderbar undurchsichtige Antwort liefern werde: "Es kommt darauf an". Aber wenn es ein zweites GET gibt, scheint es ziemlich offensichtlich, dass es einen 404 erzeugen würde? –