Więc nic nowego tutaj Po prostu próbuję uzyskać wyjaśnienie i nie mogę znaleźć żadnych innych postów.
Ponownie tworzę nowy zasób, powiedz:
/books (POST)
z ciałem:
{
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
Wiem, że powinienem zwrócić 201 (utworzony) z nagłówkiem lokalizacji nowego zasobu:
Location: /books/12345
Pytanie, na które nie potrafię odpowiedzieć, brzmi: co serwer powinien powrócić w ciele?
Często robiłem tego typu odpowiedzi:
{
id: 12345,
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
Zrobiłem to z kilku powodów:
- Napisałem API dla frameworków takich jak angularjs. W moim szczególnym przypadku używam zasobów kątowych i często potrzebuję tylko identyfikatora zasobu, aby go zlokalizować. Gdybym nie zwrócił identyfikatora w treści odpowiedzi, musiałbym parsować go poza nagłówkiem Location.
- W GET ze wszystkich książek zwykle zwracam cały obiekt, a nie tylko identyfikator. W tym sensie mój kod klienta nie musi rozróżniać, skąd uzyskać identyfikator (nagłówek lub treść).
Teraz wiem, że tak naprawdę jestem tutaj w szarej strefie, ale większość ludzi twierdzi, że zwrócenie całego zasobu jest „złą” praktyką. Ale co, jeśli serwer zmieni / doda informacje do zasobu. Z pewnością dodaje identyfikator, ale może również dodawać inne rzeczy, takie jak znacznik czasu. W przypadku, gdy nie zwracam całego zasobu, czy naprawdę lepiej jest wykonać test POST, zwróć identyfikator, a następnie poproś klienta o wykonanie operacji GET, aby uzyskać nowy zasób.