Pemahaman saya tentang REST yang memungkinkan pemodelan operasi layanan sebagai representasi negara dan transisi dari satu negara ke negara lain menggunakan HTTP. Saya selalu memahami sumber daya sebagai representasi negara sisi layanan sampai baru-baru ini ketika saya membaca artikel ini oleh Jimmy Bogard yang saya tahu sebagai pengembang / arsitek yang cerdas yang dihormati oleh masyarakat. Mengutip pernyataan spesifik dari pos itu
Representasi adalah berbeda sedikit - itu menggambarkan saat keadaan sumber daya (ketika diminta).
Ini membuat saya bingung. Apa pendapat umum tentang topik itu?
rest
api
api-design
Suhas
sumber
sumber
Jawaban:
Jawaban singkat
Jawabannya lagi - seperti dengan apa pun REST, yang tempat untuk memulai adalah dengan Roy Fielding tesis ; khususnya bab 5 . Untuk pertanyaan Anda saat ini, Anda ingin bagian 5.2.1.
Sumber
Perwakilan
Jadi: "cuaca hari ini di Los Angeles" adalah sumber daya. Representasi kandidat akan meliputi: dokumen teks dengan perkiraan terbaru dari layanan cuaca nasional; representasi visual dari radar cuaca, dan rekaman audio dari ramalan.
sumber
Sumber daya adalah hal yang Anda kerjakan. Misalnya, jika Anda memiliki API untuk mengganti lampu tertentu, maka sumber daya adalah lampu itu sendiri. Sumber daya dapat berupa fisik (misalnya lampu, orang) atau non fisik (misalnya artikel, peran, baris dalam basis data), sumber daya dapat berupa primer (misalnya saldo) atau berasal (misalnya transaksi). Sumber daya dapat merujuk ke entitas tertentu (misalnya lampu kelima yang dipasang pada soket lampu ini), atau dapat merujuk ke peran yang memetakan ke entitas yang berbeda pada waktu yang berbeda (mis. Lampu yang saat ini dipasang, lampu yang dipasang pada 5 Agustus 2008) atau dapat memetakan ke beberapa entitas (mis. semua lampu di rumah).
Representasi sumber daya adalah cara layanan Anda mengkomunikasikan keadaan sumber daya, misalnya XML, JSON yang mewakili kondisi lampu.
Dalam REST API, sumber daya diidentifikasi oleh pengidentifikasi seragam (mis. URI). Sumber daya tunggal dapat memiliki banyak representasi, dalam HTTP REST API Anda biasanya akan menunjukkan representasi yang ingin Anda gunakan dalam HTTP Content-Type dan Header Terima.
Satu realisasi kunci dalam arsitektur server klien adalah bahwa Anda tidak dapat membawa sumber daya ke klien, dan Anda tidak boleh mencoba membuatnya seperti yang Anda lakukan. Sebaliknya, di REST API, Anda memanipulasi sumber daya dari jarak jauh dengan mentransfer representasi sumber daya tersebut. Pikirkan seperti ini, Anda tidak FedEx lampu sehingga klien dapat memanipulasi lampu secara langsung, tetapi layanan membuat representasi XML / JSON / protobuf / CSV lampu dan klien mengirim representasi dari manipulasi yang dimaksud. Layanan kemudian memanipulasi keadaan lampu yang sebenarnya atas nama klien, atau menolak permintaan, mengatakan jika klien tidak berwenang untuk melakukan operasi pada lampu. Ini mungkin tampak jelas / membelah rambut, tetapi yang penting untuk dicatat adalah bahwa karena representasi bukan sumber daya itu sendiri,
sumber
Sumber daya mungkin merupakan faktur.
Representasi adalah faktur pada titik waktu tertentu dalam format JSON, atau dalam format XML. Anda mungkin mendapatkan faktur yang sama persis di kemudian hari itu akan menjadi sumber daya yang sama tetapi dalam keadaan yang berpotensi berbeda (dibatalkan, dibayar, dll).
Anda mengambil status faktur saat ini (mis: semua data faktur dalam database) dan memberikannya representasi spesifik (mis: html, xml, json) pada titik waktu tertentu, untuk ditransfer ke beberapa perangkat lain (mis:: sebuah browser)
sumber