Ini adalah penjelasan terbaik dari internet tanpa kewarganegaraan yang telah saya lihat:
Istri: Siapa itu Roy Fielding?
Ryan: Beberapa pria. Dia pintar.
Istri: Oh? Apa yang dia lakukan?
Ryan: Dia membantu menulis server web pertama dan kemudian melakukan banyak penelitian menjelaskan mengapa web bekerja seperti itu. Namanya ada pada spesifikasi untuk protokol yang digunakan untuk mendapatkan halaman dari server ke browser Anda.
Istri: Bagaimana cara kerjanya?
Ryan: Web?
Istri: Ya.
Ryan: Hmm. Yah, itu semua sungguh menakjubkan. Dan lucunya adalah semuanya sangat diremehkan. Protokol yang saya bicarakan, HTTP, mampu melakukan semua hal yang orang abaikan karena suatu alasan.
Istri: Maksud Anda http seperti awal dari apa yang saya ketik di browser?
Ryan: Ya. Bagian pertama itu memberi tahu browser protokol apa yang digunakan. Hal-hal yang Anda ketikkan di sana adalah salah satu terobosan paling penting dalam sejarah komputasi.
Istri: Kenapa?
Ryan: Karena mampu menggambarkan lokasi sesuatu di mana saja di dunia dari mana saja di dunia. Itu adalah dasar dari web. Anda dapat menganggapnya seperti koordinat GPS untuk pengetahuan dan informasi.
Istri: Untuk halaman web?
Ryan: Sebenarnya apa pun. Orang itu, Roy Fielding, dia banyak berbicara tentang apa yang ditunjukkan hal-hal itu dalam penelitian yang saya bicarakan. Web dibangun di atas gaya arsitektur yang disebut REST. REST memberikan definisi sumber daya, yang menjadi tujuan hal-hal tersebut.
Istri: Halaman web adalah sumber daya?
Ryan: Agak. Halaman web adalah representasi dari sumber daya. Sumber daya hanyalah konsep. URL - hal-hal yang Anda ketikkan ke browser ...
Istri: Saya tahu apa itu URL ..
Ryan: Oh, benar. Mereka memberi tahu browser bahwa ada konsep di suatu tempat. Browser kemudian dapat meminta representasi spesifik dari konsep tersebut. Secara khusus, browser meminta representasi halaman web dari konsep tersebut.
Istri: Jenis representasi apa lagi yang ada?
Ryan: Sebenarnya, representasi adalah salah satu dari hal-hal ini yang tidak banyak digunakan. Dalam kebanyakan kasus, sumber daya hanya memiliki satu representasi. Tetapi kami berharap bahwa representasi akan digunakan lebih banyak di masa depan karena ada banyak format baru bermunculan di semua tempat.
Istri: Seperti apa?
Ryan: Hmm. Nah, ada konsep ini yang disebut orang dengan Layanan Web. Ini berarti banyak hal berbeda bagi banyak orang, tetapi konsep dasarnya adalah bahwa mesin dapat menggunakan web seperti halnya orang.
Istri: Apakah ini robot lain?
Ryan: Tidak, tidak juga. Saya tidak bermaksud bahwa mesin akan duduk di meja dan menjelajah web. Tetapi komputer dapat menggunakan protokol yang sama untuk saling mengirim pesan satu sama lain. Kami sudah melakukan itu sejak lama, tetapi tidak ada teknik yang kami gunakan saat ini yang berfungsi dengan baik ketika Anda harus dapat berbicara dengan semua mesin di seluruh dunia.
Istri: Kenapa tidak?
Ryan: Karena mereka tidak dirancang untuk digunakan seperti itu. Ketika Fielding dan teman-temannya mulai membangun web, bisa berbicara dengan mesin apa pun di mana pun di dunia adalah perhatian utama. Sebagian besar teknik yang kami gunakan di tempat kerja untuk membuat komputer berbicara satu sama lain tidak memiliki persyaratan tersebut. Anda hanya perlu berbicara dengan sekelompok kecil mesin.
Istri: Dan sekarang Anda perlu berbicara dengan semua mesin?
Ryan: Ya - dan banyak lagi. Kita harus dapat berbicara dengan semua mesin tentang semua hal yang ada di semua mesin lain. Jadi kita perlu beberapa cara agar satu mesin memberi tahu mesin lain tentang sumber daya yang mungkin ada di komputer lain.
Istri: Apa?
Ryan: Katakanlah Anda sedang berbicara dengan kakak Anda dan dia ingin meminjam penyapu atau sesuatu. Tetapi Anda tidak memilikinya - Ibumu memilikinya. Jadi, Anda memberi tahu adikmu untuk mendapatkannya dari ibumu. Ini terjadi setiap saat di kehidupan nyata dan itu terjadi setiap saat ketika mesin mulai berbicara juga.
Istri: Jadi, bagaimana mesin-mesin itu saling memberi tahu di mana letak benda-benda itu?
Ryan: URL, tentu saja. Jika semua yang perlu dibicarakan mesin memiliki URL yang sesuai, Anda telah membuat mesin yang setara dengan kata benda. Bahwa Anda dan saya dan seluruh dunia telah sepakat untuk berbicara tentang kata benda dengan cara tertentu sangat penting, eh?
Istri: Ya.
Ryan: Mesin tidak memiliki kata benda universal - itu sebabnya mereka payah. Setiap bahasa pemrograman, basis data, atau jenis sistem lainnya memiliki cara berbeda untuk berbicara tentang kata benda. Itu sebabnya URL sangat penting. Mari kita semua sistem ini saling bercerita tentang kata benda satu sama lain.
Istri: Tetapi ketika saya melihat halaman web, saya tidak berpikir seperti itu.
Ryan: Tidak ada yang tahu. Kecuali Fielding dan segelintir orang lain. Itu sebabnya mesin masih payah.
Istri: Bagaimana dengan kata kerja dan kata ganti dan kata sifat?
Ryan: Lucu, kamu bertanya karena itu aspek besar lain dari REST. Yah, bagaimanapun juga, kata kerja.
Istri: Saya hanya bercanda.
Ryan: Itu lelucon lucu tapi sebenarnya bukan lelucon sama sekali. Kata kerja itu penting. Ada konsep yang kuat dalam pemrograman dan teori CS yang disebut polimorfisme. Itu cara yang aneh mengatakan bahwa kata benda yang berbeda dapat memiliki kata kerja yang sama diterapkan pada mereka.
Istri: Saya tidak mengerti.
Ryan: Ya .. Lihatlah meja kopinya. Apa kata benda? Piala, nampan, koran, remote. Sekarang, apa beberapa hal yang dapat Anda lakukan untuk semua hal ini?
Istri: Saya tidak mengerti ...
Ryan: Anda bisa mendapatkannya, bukan? Anda bisa mengambilnya. Anda bisa menjatuhkan mereka. Anda bisa membakarnya. Anda bisa menerapkan kata kerja persis yang sama itu ke salah satu objek yang duduk di sana.
Istri: Oke ... jadi?
Ryan: Ya, itu penting. Bagaimana jika alih-alih saya bisa mengatakan kepada Anda, "ambil piala," dan "ambil koran," dan "ambil kendali jarak jauh"; bagaimana jika alih-alih kami perlu menghasilkan kata kerja yang berbeda untuk masing-masing kata benda? Saya tidak bisa menggunakan kata "dapatkan" secara universal, tetapi sebaliknya harus memikirkan kata baru untuk setiap kombinasi kata kerja / kata benda.
Istri: Wow! Itu aneh.
Ryan: Ya, benar. Otak kita entah bagaimana cukup pintar untuk mengetahui bahwa kata kerja yang sama dapat diterapkan pada banyak kata benda yang berbeda. Beberapa kata kerja lebih spesifik daripada yang lain dan hanya berlaku untuk sejumlah kecil kata benda. Misalnya, saya tidak bisa mengendarai cangkir dan saya tidak bisa minum mobil. Tetapi beberapa kata kerja hampir universal seperti GET, PUT, dan DELETE.
Istri: Anda tidak bisa HAPUS cangkir.
Ryan: Yah, oke, tapi kamu bisa membuangnya. Itu lelucon lain, kan?
Istri: Ya.
Ryan: Jadi, HTTP - protokol yang dibuat Fielding dan teman-temannya - adalah tentang menerapkan kata kerja ke kata benda. Misalnya, ketika Anda pergi ke halaman web, browser melakukan HTTP GET pada URL yang Anda ketik dan kembali datang halaman web.
Halaman web biasanya memiliki gambar, bukan? Itu adalah sumber daya yang terpisah. Halaman web hanya menentukan URL untuk gambar dan browser berjalan dan melakukan lebih banyak HTTP GET pada mereka sampai semua sumber daya diperoleh dan halaman web ditampilkan. Tetapi yang penting di sini adalah jenis-jenis kata benda yang sangat berbeda dapat diperlakukan sama. Apakah kata benda itu adalah gambar, teks, video, mp3, tampilan slide, apa pun. Saya bisa MENDAPATKAN semua hal itu dengan cara yang sama dengan memberikan URL.
Istri: Kedengarannya seperti GET adalah kata kerja yang cukup penting.
Ryan: Ya . Terutama saat Anda menggunakan peramban web karena peramban cukup banyak. Mereka tidak melakukan banyak jenis interaksi dengan sumber daya. Ini adalah masalah karena telah membuat banyak orang menganggap bahwa HTTP hanya untuk MENDAPATKAN. Tetapi HTTP sebenarnya adalah protokol tujuan umum untuk menerapkan kata kerja ke kata benda.
Istri: Keren. Tapi saya masih tidak melihat bagaimana ini mengubah apa pun. Apa jenis kata benda dan kata kerja yang Anda inginkan?
Ryan: Ya, kata benda ada di sana tetapi tidak dalam format yang tepat.
Pikirkan ketika Anda menjelajahi amazon.com mencari hal-hal untuk membeli saya untuk Natal. Bayangkan masing-masing produk sebagai kata benda. Sekarang, jika mereka tersedia dalam representasi yang bisa dipahami mesin, Anda bisa melakukan banyak hal yang rapi.
Istri: Mengapa mesin tidak dapat memahami halaman web normal?
Ryan: Karena halaman web dirancang untuk dipahami oleh orang-orang. Mesin tidak peduli dengan tata letak dan gaya. Mesin pada dasarnya hanya membutuhkan data. Idealnya, setiap URL akan memiliki representasi yang dapat dibaca manusia dan mesin yang dapat dibaca. Ketika mesin DAPATKAN sumber daya, itu akan meminta mesin yang dapat dibaca. Ketika browser MENDAPATKAN sumber daya untuk manusia, ia akan meminta yang dapat dibaca manusia.
Istri: Jadi orang harus membuat format mesin untuk semua halaman mereka?
Ryan: Kalau itu berharga.
Dengar, kita sudah membicarakan ini dengan banyak abstraksi. Bagaimana kalau kita ambil contoh nyata. Anda seorang guru - di sekolah saya yakin Anda memiliki sistem komputer yang besar, atau tiga atau empat sistem komputer yang lebih memungkinkan, yang memungkinkan Anda mengelola siswa: kelas apa mereka, nilai apa yang mereka dapatkan, kontak darurat, informasi tentang buku-buku yang Anda ajarkan, dll. Jika sistem berbasis web, maka mungkin ada URL untuk masing-masing kata benda yang terlibat di sini: siswa, guru, kelas, buku, ruang, dll. Saat ini, dapatkan URL melalui browser memberi Anda halaman web. Jika ada representasi yang dapat dibaca mesin untuk setiap URL, maka akan sepele untuk memasang alat baru ke sistem karena semua informasi itu dapat dikonsumsi dengan cara standar. Ini juga akan membuat sedikit lebih mudah bagi masing-masing sistem untuk berbicara satu sama lain. Atau, Anda dapat membangun sistem negara bagian atau negara yang mampu berbicara dengan masing-masing sistem sekolah untuk mengumpulkan nilai ujian. Kemungkinannya tidak terbatas.
Masing-masing sistem akan mendapatkan informasi dari satu sama lain menggunakan HTTP GET sederhana. Jika satu sistem perlu menambahkan sesuatu ke sistem lain, itu akan menggunakan HTTP POST. Jika suatu sistem ingin memperbarui sesuatu di sistem lain, ia menggunakan PUT HTTP. Satu-satunya yang tersisa untuk mencari tahu adalah seperti apa data itu seharusnya.
Istri: Jadi ini yang sedang Anda dan semua orang komputer kerjakan sekarang? Memutuskan seperti apa data itu?
Ryan: Sedih, tidak. Sebaliknya, sebagian besar sibuk menulis lapisan spesifikasi rumit untuk melakukan hal-hal ini dengan cara yang berbeda yang hampir tidak bermanfaat atau fasih. Kata benda tidak universal dan kata kerja bukan polimorfik. Kami membuang puluhan tahun penggunaan lapangan nyata dan teknik yang sudah terbukti dan memulai kembali dengan sesuatu yang sangat mirip dengan sistem lain yang telah gagal di masa lalu. Kami menggunakan HTTP tetapi hanya karena itu membantu kami berbicara dengan jaringan dan petugas keamanan kami lebih sedikit. Kami berdagang kesederhanaan untuk alat dan penyihir mencolok.
Istri: Kenapa?
Ryan: Saya tidak tahu.
Istri: Mengapa kamu tidak mengatakan sesuatu?
Ryan: Mungkin saya akan.