Так что ничего нового здесь я просто пытаюсь получить некоторые пояснения и не могу найти в других сообщениях.
Я создаю новый ресурс сдержанно, скажем:
/books (POST)
с телом:
{
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
Я знаю, что я должен вернуть 201 (создан) с заголовком Location нового ресурса:
Location: /books/12345
Вопрос, на который я не могу ответить сам, - это то, что сервер должен возвращать в теле.
Я часто делал такой ответ:
{
id: 12345,
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
Я сделал это по нескольким причинам:
- Я написал api для фреймворков front end, таких как angularjs. В моем В частном случае я использую ресурсы angular, и мне часто нужно просто идентификатор ресурса, чтобы найти его. Если я не вернул идентификатор в орган реагирования мне нужно будет разобрать его из местоположения заголовок.
- В GET всех книг я обычно возвращаю весь объект не только id. В этом смысле мой клиентский код не должен различать где получить идентификатор из (заголовок местоположения или тело).
Теперь я сейчас действительно в серой зоне, но большинство людей говорят, что возвращение всего ресурса - это "плохая" практика. Но что, если сервер изменяет/добавляет информацию в ресурс. Он определенно добавляет идентификатор, но может также добавить другие вещи, такие как метка времени. В случае, если я не возвращаю весь ресурс, лучше ли делать POST, возвращать идентификатор, а затем клиент выполняет GET для получения нового ресурса.