Also nichts Neues hier Ich versuche nur eine Klarstellung zu bekommen und kann anscheinend keine in anderen Posts finden.
Ich erstelle unruhig eine neue Ressource, sagen wir:
/books (POST)
mit einem Körper:
{
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
Ich weiß, dass ich eine 201 (Erstellt) mit einem Standortheader der neuen Ressource zurückgeben sollte:
Location: /books/12345
Die Frage, die ich anscheinend nicht für mich selbst beantworten kann, ist, was der Server im Körper zurückgeben soll.
Ich habe oft diese Art von Antwort gemacht:
{
id: 12345,
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
Ich habe dies aus mehreren Gründen getan:
- Ich habe API für Front-End-Frameworks wie AngularJs geschrieben. In meinem speziellen Fall verwende ich eckige Ressourcen und benötige häufig nur die ID der Ressource, um sie zu finden. Wenn ich die ID im Antworttext nicht zurückgeben würde, müsste ich sie aus dem Location-Header analysieren.
- In einem GET aller Bücher gebe ich normalerweise das gesamte Objekt zurück, nicht nur die ID. In diesem Sinne muss mein Client-Code nicht unterscheiden, woher die ID stammt (Standort-Header oder Body).
Jetzt weiß ich, dass ich hier wirklich in der Grauzone bin, aber die meisten Leute sagen, dass die Rückgabe der gesamten Ressource eine „schlechte“ Praxis ist. Was aber, wenn der Server der Ressource Informationen ändert / hinzufügt? Es fügt definitiv die ID hinzu, kann aber auch andere Dinge wie einen Zeitstempel hinzufügen. Für den Fall, dass ich nicht die gesamte Ressource zurückgebe, ist es wirklich besser, einen POST durchzuführen, die ID zurückzugeben und dann den Client ein GET ausführen zu lassen, um die neue Ressource abzurufen.
quelle
Antworten:
Das Zurückgeben des gesamten Objekts bei einem Update scheint nicht sehr relevant zu sein, aber ich kann kaum erkennen, warum das Zurückgeben des gesamten Objekts beim Erstellen in einem normalen Anwendungsfall eine schlechte Praxis wäre. Dies wäre zumindest nützlich, um die ID leicht zu erhalten und gegebenenfalls die Zeitstempel zu erhalten. Dies ist eigentlich das Standardverhalten beim Gerüstbau mit Rails.
Ich sehe wirklich keinen Vorteil darin, nur die ID zurückzugeben und danach eine GET-Anfrage zu stellen, um die Daten zu erhalten, die Sie mit Ihrem ersten POST hätten erhalten können.
Wie auch immer, solange Ihre API konsistent ist, sollten Sie das Muster auswählen, das Ihren Anforderungen am besten entspricht. Es gibt keine korrekte Methode zum Erstellen einer REST-API, imo.
quelle
Die Rückgabe des neuen Objekts entspricht dem REST-Prinzip "Uniform Interface - Manipulation von Ressourcen durch Repräsentationen". Das vollständige Objekt ist die Darstellung des neuen Status des erstellten Objekts.
Hier finden Sie eine wirklich hervorragende Referenz für das API-Design: Best Practices für das Entwerfen einer pragmatischen RESTful-API
Hier finden Sie eine Antwort auf Ihre Frage: Updates & Erstellung sollten eine Ressourcendarstellung zurückgeben
Es sagt:
Scheint mir sehr pragmatisch und passt zu dem oben erwähnten REST-Prinzip.
quelle