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.