Sie können gültige HTTP-Anfragen stellen, aber gegen das Design von HTTP gehen. Ich konzentriere mich in meiner Antwort auf das korrekte HTTP-Design.
Erstens, wenn Sie eine GET-Anforderungen ausführen, erhalten Sie immer eine Darstellung einer Ressource. Auch wenn eine URL so etwas wie eine "Sammlung von Ressourcen" darstellt, gibt es keine strikte Definition in HTTP. Diese Liste von Ressourcen kann immer noch mehrere Entitäten darstellen, die aus Ihrem Datenmodell stammen.
So ein Anruf an /users
kann mehrere Benutzer-Entitäten zurückgeben.
Ebenso kann ein DELETE
an Benutzer bedeuten, dass Sie die gesamte /users
Sammlung und alles darin löschen.
Ein Problem, das ich sehe, und keine gute Antwort auf haben ist, dass Sie die Abfragezeichenfolge verwenden, um mehrere Ressourcen zu löschen. Ich denke, das ist in Ordnung für GET
/HEAD
, aber ich Frage, ob es auch für DELETE
korrekt ist. Es fühlt sich definitiv ein bisschen "komisch" an, weil ich glaube, dass ein DELETE
auf /users?foo=bar
/users
löschen sollte und es wird normalerweise aufgrund der meisten Frameworks funktionieren. Sollte es? Ich bin mir eigentlich nicht sicher. REST ist nicht unbedingt ein Standard, also können wir dort keine Antworten finden. Alles was ich habe, ist, dass es sich falsch anfühlt. Mir ist klar, dass du nicht streng nach REST fragst, also aus einer strengen HTTP-Perspektive ist es definitiv in Ordnung.
Allerdings könnten Sie Ihre Urls Struktur nicht aussehen:
/users?id[]=12&id[]=4&id[]=65
, sondern so etwas wie dieses:
/users/12,4,65
Ich habe andere gesehen tun dies, und es fühlt sich ein bisschen weniger falsch zu mir. Aber das ist meistens Vermutung.
Unabhängig davon, ob Sie eine DELETE
für mehrere Entitäten wie diese ausführen, sollte die Anforderung entweder erfolgreich sein oder gar nichts tun. Ein Teilerfolg wird nicht akzeptiert, daher können Sie einfach die üblichen 200/204 Antwortcodes verwenden, um auf ein erfolgreiches Löschen hinzuweisen.
Wie würde Ihre Anfrage wissen, welche Art von Antwort zurückgegeben werden soll, und warum möchten Sie dies tun? –
Nun, natürlich mehrere Entitäten mit einem einzigen Anruf zurück zu bekommen. – cottton