Jadi tidak ada yang baru di sini saya hanya mencoba untuk mendapatkan klarifikasi dan sepertinya tidak dapat menemukan di posting lain
Saya membuat sumber daya baru dengan tenang, katakan:
/books (POST)
dengan tubuh:
{
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
Saya tahu bahwa saya harus mengembalikan 201 (Dibuat) dengan header Lokasi sumber daya baru:
Location: /books/12345
Pertanyaan yang sepertinya tidak bisa saya jawab sendiri adalah apa yang harus dikembalikan server di dalam tubuh.
Saya sering melakukan respons seperti ini:
{
id: 12345,
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
Saya melakukan ini karena beberapa alasan:
- Saya telah menulis api untuk kerangka ujung depan seperti angularjs. Dalam kasus khusus saya, saya menggunakan sumber daya sudut dan saya sering hanya perlu id untuk sumber daya untuk menemukannya. Jika saya tidak mengembalikan id di badan respons, saya harus menguraikannya keluar dari header Lokasi.
- Dalam GET semua buku saya biasanya mengembalikan seluruh objek bukan hanya id. Dalam hal ini kode klien saya tidak harus membedakan dari mana mendapatkan id dari (header atau badan lokasi).
Sekarang saya tahu saya benar-benar berada di daerah abu-abu di sini, tetapi kebanyakan orang mengatakan bahwa mengembalikan seluruh sumber daya adalah praktik yang 'buruk'. Tetapi bagaimana jika server mengubah / menambahkan informasi ke sumber daya. Itu pasti menambahkan id, tetapi mungkin juga menambahkan hal-hal lain seperti cap waktu. Jika saya tidak mengembalikan seluruh sumber daya, apakah lebih baik melakukan POST, mengembalikan id, lalu meminta klien melakukan GET untuk mendapatkan sumber daya baru.
sumber
Jawaban:
Mengembalikan seluruh objek pada pembaruan sepertinya tidak terlalu relevan, tapi saya hampir tidak bisa melihat mengapa mengembalikan seluruh objek saat dibuat akan menjadi praktik buruk dalam kasus penggunaan normal. Ini akan berguna setidaknya untuk mendapatkan ID dengan mudah dan mendapatkan cap waktu ketika relevan. Ini sebenarnya adalah perilaku default yang didapat ketika perancah dengan Rails.
Saya benar-benar tidak melihat keuntungan dari hanya mengembalikan ID dan melakukan permintaan GET setelahnya, untuk mendapatkan data yang bisa Anda dapatkan dengan POST awal Anda.
Bagaimanapun, selama API Anda konsisten, saya pikir Anda harus memilih pola yang paling sesuai dengan kebutuhan Anda. Tidak ada cara yang benar tentang cara membangun REST API, imo.
sumber
Mengembalikan objek baru sesuai dengan prinsip REST dari "Uniform Interface - Manipulasi sumber daya melalui representasi." Objek lengkap adalah representasi keadaan baru dari objek yang telah dibuat.
Ada referensi yang sangat bagus untuk desain API, di sini: Praktik Terbaik untuk Merancang API Tenang Pragmatis
Ini mencakup jawaban atas pertanyaan Anda di sini: Pembaruan & pembuatan harus mengembalikan representasi sumber
Ia mengatakan:
Tampak pragmatis bagi saya dan cocok dengan prinsip REST yang saya sebutkan di atas.
sumber