J'ai autorisé le remplacement en gros d'une collection, par exemple PUT ~/people/123/shoes
où le corps est la représentation entière de la collection.
Cela fonctionne pour les petites collections d'éléments enfants où le client souhaite examiner les éléments et en éliminer certains, en ajouter d'autres, puis mettre à jour le serveur. Ils pourraient METTRE une collection vide pour tout supprimer.
Cela signifierait GET ~/people/123/shoes/9
resterait toujours dans le cache même si un PUT l'a supprimé, mais ce n'est qu'un problème de mise en cache et ce serait un problème si une autre personne supprimait la chaussure.
Mes API de données / systèmes utilisent toujours des ETags par opposition aux délais d'expiration, de sorte que le serveur est touché à chaque demande, et j'ai besoin d'en-têtes de version / concurrence corrects pour muter les données. Pour les API qui sont en lecture seule et alignées vue / rapport, j'utilise les délais d'expiration pour réduire les appels à l'origine, par exemple, un classement peut durer 10 minutes.
Pour des collections beaucoup plus volumineuses, comme ~/people
, j'ai tendance à ne pas avoir besoin de plusieurs suppressions, le cas d'utilisation a tendance à ne pas se produire naturellement et donc un seul DELETE fonctionne bien.
À l'avenir, et d'après l'expérience de la création d'API REST et des mêmes problèmes et exigences, comme l'audit, je serais enclin à utiliser uniquement les verbes GET et POST et à concevoir autour d'événements, par exemple POST un événement de changement d'adresse, bien que je soupçonne que 'll viendra avec son propre ensemble de problèmes :)
J'autoriserais également les développeurs front-end à créer leurs propres API qui consomment des API back-end plus strictes, car il existe souvent des raisons pratiques et valides côté client pour lesquelles ils n'aiment pas les conceptions d'API REST strictes "Fielding zealot", et pour la productivité et raisons de la superposition du cache.