Ich habe einen umfassenden Ersatz einer Sammlung zugelassen, z. B. PUT ~/people/123/shoeswenn der Körper die gesamte Sammlung darstellt.
Dies funktioniert für kleine untergeordnete Sammlungen von Elementen, bei denen der Client die Elemente überprüfen und einige entfernen und andere hinzufügen und dann den Server aktualisieren möchte. Sie könnten eine leere Sammlung platzieren, um alle zu löschen.
Dies würde bedeuten GET ~/people/123/shoes/9, dass der Cache weiterhin im Cache verbleibt, obwohl er von einem PUT gelöscht wurde. Dies ist jedoch nur ein Caching-Problem und ein Problem, wenn eine andere Person den Schuh löscht.
Meine Daten- / System-APIs verwenden im Gegensatz zu Ablaufzeiten immer ETags, sodass der Server bei jeder Anforderung getroffen wird, und ich benötige korrekte Versions- / Parallelitäts-Header, um die Daten zu mutieren. Für APIs, die schreibgeschützt sind und auf Ansicht / Bericht ausgerichtet sind, verwende ich Ablaufzeiten, um Treffer beim Ursprung zu reduzieren, z. B. kann eine Rangliste 10 Minuten lang gültig sein.
Bei viel größeren Sammlungen, wie z. B. ~/people, muss ich nicht mehrfach löschen, der Anwendungsfall tritt normalerweise nicht auf natürliche Weise auf, sodass ein einzelnes LÖSCHEN einwandfrei funktioniert.
In Zukunft und aufgrund der Erfahrung mit dem Erstellen von REST-APIs und dem Erreichen der gleichen Probleme und Anforderungen wie Audits würde ich gerne nur GET- und POST-Verben verwenden und Ereignisse entwerfen, z. B. POST, ein Ereignis zur Änderung der Adresse, obwohl ich das vermute Ich werde mit seinen eigenen Problemen kommen :)
Ich würde auch Front-End-Entwicklern erlauben, ihre eigenen APIs zu erstellen, die strengere Back-End-APIs verbrauchen, da es oft praktische, gültige clientseitige Gründe gibt, warum sie strenge "Fielding zelot" -REST-API-Designs nicht mögen, und dies für Produktivität und Produktivität Gründe für die Cache-Überlagerung.