Тож нічого нового тут я просто намагаюся отримати дещо роз’яснення і не можу знайти жодного в інших публікаціях.
Я створюю новий ресурс спокійно, скажіть:
/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 для фронтальних рамок, як angularjs. У моєму конкретному випадку я використовую кутові ресурси, і мені часто потрібен лише ідентифікатор ресурсу, щоб знайти його. Якщо я не повернув ідентифікатор в тілі відповіді, мені потрібно було б розібрати його із заголовка Location.
- У GET усіх книг я зазвичай повертаю весь об'єкт не лише ідентифікатор. У цьому сенсі мій клієнтський код не повинен розрізняти, звідки взяти ідентифікатор (заголовок місцезнаходження або тіло).
Тепер я знаю, що я справді перебуваю в сірій зоні, але більшість людей кажуть, що повернення всього ресурсу - це «погана» практика. Але що робити, якщо сервер змінює / додає інформацію до ресурсу. Він, безумовно, додає ідентифікатор, але може також додати інші речі, такі як часова мітка. Якщо я не повертаю весь ресурс, чи справді краще зробити POST, повернути ідентифікатор, а потім дозволити клієнту виконати GET, щоб отримати новий ресурс.