Lebih
Apa sebenarnya yang Tenang pemrograman?
Apa sebenarnya yang Tenang pemrograman?
3909
32
Apa sebenarnya yang Tenang pemrograman?
ISTIRAHAT apakah yang mendasari prinsip arsitektur web. Hal yang menakjubkan tentang web adalah kenyataan bahwa klien (browser) dan server dapat saling berinteraksi dalam cara yang kompleks tanpa klien mengetahui apa-apa sebelumnya tentang server dan sumber daya host. Kunci kendala adalah bahwa server dan client harus sama-sama setuju pada media digunakan, yang dalam kasus web HTML.
API yang menganut prinsip-prinsip ISTIRAHAT tidak memerlukan klien untuk tahu apa-apa tentang struktur dari API. Sebaliknya, kebutuhan server untuk memberikan informasi apapun kebutuhan klien untuk berinteraksi dengan layanan. An form HTML contoh ini: server menentukan lokasi sumber daya dan kolom yang diperlukan. Browser doesn't tahu terlebih dahulu di mana untuk mengirimkan informasi, dan itu doesn't mengetahui terlebih dahulu informasi apa yang akan dikirim. Kedua bentuk informasi yang seluruhnya disediakan oleh server. (Prinsip ini disebut HATEOAS: Hypermedia Sebagai Mesin Negara Aplikasi.)
Jadi, bagaimana hal ini berlaku untuk HTTP, dan bagaimana hal itu dapat dilaksanakan dalam praktek? HTTP adalah berorientasi pada kata kerja dan sumber daya. Dua kata kerja dalam mainstream penggunaan
MENDAPATKAN
danPOST
, yang saya pikir semua orang akan mengenali. Namun, HTTP standar mendefinisikan beberapa orang lain sepertiMASUKAN
danDELETE
. Kata ini kemudian diterapkan untuk sumber daya, sesuai dengan petunjuk yang disediakan oleh server.Misalnya, Let's membayangkan bahwa kita memiliki database pengguna yang dikelola oleh layanan web. Kami menggunakan layanan custom hypermedia berdasarkan JSON, yang kami menetapkan tipe mime
application/json+userdb
(Ada juga mungkin yangapplication/xml+userdb
danaplikasi/apapun+userdb
- banyak jenis media yang dapat didukung). Klien dan server memiliki keduanya telah diprogram untuk memahami format ini, tetapi mereka don't tahu apa-apa tentang satu sama lain. Sebagai Roy Fielding poin:Permintaan untuk dasar sumber daya
/
mungkin kembali sesuatu seperti ini:Permintaan
Respon
Kita tahu dari keterangan media kita bahwa kita dapat menemukan informasi tentang sumber daya terkait dari bagian-bagian yang disebut "link". Ini disebut Hypermedia kontrol. Dalam hal ini, dapat kita lihat dari bagian seperti yang kita dapat menemukan daftar pengguna dengan membuat permintaan lain untuk
pengguna
:Permintaan
Respon
Kami dapat memberitahu banyak dari respon ini. Misalnya, kita sekarang tahu bahwa kita dapat membuat user baru dengan
POST-ing untuk
pengguna`:Permintaan
Respon
Kita juga tahu bahwa kita bisa mengubah data yang ada:
Permintaan
Respon
Perhatikan bahwa kita menggunakan yang berbeda HTTP verba (
GET
,PUT
,POST
,HAPUS
, dll.) untuk memanipulasi sumber daya ini, dan bahwa satu-satunya pengetahuan yang kita kira pada klien's bagian ini kita definisi media.Bacaan lebih lanjut:
(Jawaban ini telah menjadi subyek dari sejumlah kritik untuk hilang titik. Untuk sebagian besar, yang telah yang adil kritik. Apa yang saya awalnya dijelaskan lebih sejalan dengan cara ISTIRAHAT yang biasanya dilaksanakan beberapa tahun yang lalu ketika pertama kali saya menulis ini, bukan arti yang sebenarnya. I've direvisi jawaban untuk lebih mewakili arti sebenarnya.)
An gaya arsitektur disebut ISTIRAHAT (rest) menganjurkan bahwa aplikasi web harus menggunakan HTTP seperti itu awalnya dibayangkan. Lookup harus menggunakan
AMBIL
permintaan.MENEMPATKAN
,POST
, danHAPUS
permintaan harus digunakan untuk mutasi, penciptaan, dan penghapusan masing-masing.SISA pendukung cenderung mendukung Url, seperti
tapi arsitektur tidak memerlukan ini "Url cantik". MENDAPATKAN permintaan dengan parameter
adalah setiap bit sebagai Nyenyak.
Perlu diingat bahwa MENDAPATKAN permintaan tidak boleh digunakan untuk memperbarui informasi. Misalnya, MENDAPATKAN permintaan untuk menambahkan item ke keranjang
tidak akan sesuai. MENDAPATKAN permintaan harus idempotent. Yaitu, mengeluarkan permintaan dua kali harus ada yang berbeda dari penerbitan sekali. Yang's apa yang membuat permintaan disimpan di cache. Sebuah "add to cart" permintaan tidak idempotent—mengeluarkan dua kali menambahkan dua salinan dari item ke keranjang. POSTING permintaan jelas tepat dalam konteks ini. Dengan demikian, bahkan RESTful web aplikasi kebutuhan pangsa permintaan POST.
Ini diambil dari buku yang sangat bagus Inti JavaServer faces buku oleh David M. Geary.
Tenang pemrograman adalah tentang:
Membuat
,Mengambil
,Update
,Hapus
menjadiPOST
,GET
,PUT
, danDELETE
. Tapi SISANYA tidak terbatas untuk HTTP, itu adalah salah satu yang paling umum digunakan transportasi sekarang.Yang terakhir ini mungkin yang paling penting dalam hal konsekuensi dan efektivitas keseluruhan dari SISANYA. Secara keseluruhan, sebagian besar Tenang diskusi tampaknya center pada HTTP dan penggunaan dari browser dan apa yang tidak. Saya memahami bahwa R. Tangkas menciptakan istilah ketika ia menggambarkan arsitektur dan keputusan-keputusan yang mengarah ke HTTP. Tesis adalah lebih lanjut tentang arsitektur dan cache-kemampuan sumber daya dari itu adalah tentang HTTP.
Jika anda benar-benar tertarik pada apa yang Tenang arsitektur dan mengapa ia bekerja, baca tesis beberapa kali dan membaca semuanya bukan hanya Bab 5! Berikutnya melihat ke mengapa DNS bekerja. Baca tentang organisasi hierarki DNS dan bagaimana arahan kerja. Kemudian membaca dan mempertimbangkan bagaimana DNS caching bekerja. Akhirnya, baca spesifikasi HTTP (RFC2616 dan RFC3040 secara khusus) dan mempertimbangkan bagaimana dan mengapa caching bekerja dengan cara itu. Pada akhirnya, itu hanya akan klik. Wahyu terakhir bagi saya adalah ketika saya melihat kesamaan antara DNS dan HTTP. Setelah ini, pemahaman mengapa SOA dan Message Passing Interface yang terukur mulai klik.
Saya pikir yang paling penting trik untuk memahami arsitektur pentingnya dan kinerja implikasi yang Tenang dan Berbagi apa-Apa arsitektur adalah untuk menghindari semakin tergantung pada teknologi dan rincian pelaksanaan. Berkonsentrasi pada siapa yang memiliki sumber daya, yang bertanggung jawab untuk menciptakan/menjaga mereka, dll. Kemudian berpikir tentang representasi, protokol, dan teknologi.
Ini adalah apa yang mungkin terlihat seperti.
Membuat user dengan tiga sifat:
Server merespon:
Di masa depan, maka anda dapat mengambil informasi pengguna:
Server merespon:
Untuk memodifikasi record (
lname
danusia
akan tetap tidak berubah):Untuk memperbarui catatan (dan akibatnya
lname
danusia
akan BATAL):Sebuah buku besar di REST BERISTIRAHAT dalam Praktek.
Harus dibaca rest (ISTIRAHAT) dan REST Api harus hypertext-driven
Lihat Martin Fowlers artikel Richardson Model Kematangan (RMM) untuk penjelasan tentang apa yang Tenang dengan layanan ini.
Untuk menjadi Tenang Layanan kebutuhan untuk memenuhi Hypermedia sebagai Mesin kondisi Aplikasi. (HATEOAS), yaitu, kebutuhan untuk mencapai tingkat 3 di RMM, baca artikel untuk rincian atau slide dari qcon bicara.
SISA Tes Lakmus untuk Web Framework adalah serupa kematangan tes untuk web framework.
Mendekati murni ISTIRAHAT: Belajar untuk mencintai HATEOAS adalah koleksi link.
SISA terhadap SABUN untuk Cloud Publik membahas tingkat saat ini dari SISA pemakaian.
Jalan-jalan dan versi membahas Diperpanjang, Versi, Evolvability, dll. melalui Modifiability
Salah satu referensi terbaik yang saya temukan ketika saya mencoba untuk menemukan nyata sederhana yang berarti istirahat.
http://rest.elkstein.org/
SISANYA menggunakan berbagai metode HTTP (terutama MENDAPATKAN/PASANG/HAPUS) untuk memanipulasi data.
Daripada menggunakan URL tertentu untuk menghapus metode (katakanlah,
/user/123/hapus
), anda akan mengirim MENGHAPUS permintaan ke/user/[id]
URL, untuk mengedit pengguna, untuk mengambil informasi pada pengguna anda mengirim permintaan GET/user/[id]
Misalnya, bukan satu set Url yang mungkin terlihat seperti beberapa hal berikut..
Anda menggunakan HTTP "kata kerja" dan memiliki..
It's pemrograman di mana arsitektur dari sistem anda cocok SISA gaya ditata oleh Roy Fielding di tesis. Karena ini adalah gaya arsitektur yang menggambarkan web (lebih atau kurang), banyak orang yang tertarik di dalamnya.
Bonus menjawab: Tidak ada. Kecuali anda're mempelajari arsitektur perangkat lunak seperti akademik atau merancang web services, ada's benar-benar tidak ada alasan untuk pernah mendengar istilah.
Saya akan mengatakan Tenang pemrograman akan membuat sistem (API) yang mengikuti SELURUH gaya arsitektur.
Saya menemukan ini fantastis, singkat, dan mudah untuk memahami tutorial tentang SISANYA oleh Dr. M. Elkstein dan mengutip bagian penting yang akan menjawab pertanyaan anda untuk sebagian besar:
Belajar SISA: Tutorial
Saya don't pikir anda harus merasa bodoh karena tidak mendengar tentang SISANYA di luar Stack Overflow..., aku akan berada dalam situasi yang sama!; jawaban untuk hal lain yang JADI pertanyaan di Mengapa BERISTIRAHAT semakin besar sekarang bisa meringankan perasaan.
Saya minta maaf jika saya'm tidak menjawab pertanyaan secara langsung, tapi itu's mudah untuk memahami semua ini dengan lebih rinci contoh. Tangkas ini tidak mudah untuk memahami karena semua abstraksi dan terminologi.
Ada's contoh yang cukup baik berikut ini:
Menjelaskan jalan-jalan dan Hypertext: Spam-E Spam Robot Pembersih
Dan bahkan lebih baik, di sana's bersih penjelasan dengan contoh-contoh sederhana berikut ini (powerpoint lebih komprehensif, tetapi anda bisa mendapatkan sebagian besar dari itu dalam versi html):
http://www.xfront.com/REST.ppt atau http://www.xfront.com/REST.html
Setelah membaca contoh, saya bisa melihat mengapa Ken mengatakan bahwa SISANYA adalah hypertext-driven. I'm tidak benar-benar yakin bahwa ia's benar, karena yang /user/123 adalah URI yang menunjuk ke sumber daya, dan's tidak jelas bagi saya bahwa itu's unRESTful hanya karena klien tahu tentang hal itu "out-of-band."
Yang xfront dokumen yang menjelaskan perbedaan antara ISTIRAHAT dan SABUN, dan ini benar-benar membantu juga. Ketika Fielding mengatakan, "Yaitu RPC. Jeritan RPC.", it's jelas bahwa RPC tidak Tenang, sehingga's berguna untuk melihat alasan yang tepat untuk ini. (SABUN adalah jenis RPC.)
Apa SISANYA?
SISANYA dalam kata-kata resmi, SISANYA adalah sebuah gaya arsitektur yang dibangun pada prinsip-prinsip tertentu menggunakan saat ini "Web" dasar-dasar. Ada 5 dasar dasar web yang dimanfaatkan untuk membuat layanan SISA.
Prinsip 1: Segala sesuatu adalah Sumber daya Di SISA gaya arsitektur, fungsi dan data yang dianggap sumber daya dan diakses menggunakan Uniform Resource Identifier (Uri), biasanya link pada Web. Prinsip 2: Setiap Sumber daya yang Diidentifikasi oleh Unique Identifier (URI) Prinsip 3: Gunakan Sederhana dan Antarmuka Seragam Prinsip 4: Komunikasi yang Dilakukan oleh Representasi Prinsip 5: Menjadi Tanpa Kewarganegaraan
Aku melihat sekelompok jawaban yang mengatakan menempatkan segala sesuatu tentang pengguna 123 pada sumber daya "/user/123" lebih Tenang.
Roy Fielding, yang menciptakan istilah, kata REST Api harus hypertext-driven. Secara khusus, "SISA API tidak harus mendefinisikan tetap nama sumber daya atau hierarki".
Jadi jika anda "/user/123" jalan hardcoded pada klien, it's tidak benar-benar Tenang. Penggunaan yang baik dari HTTP, mungkin, mungkin tidak. Tetapi tidak Tenang. Itu harus datang dari hypertext.
Jawabannya sangat sederhana, ada disertasi ditulis oleh Roy Fielding.]1 Dalam disertasinya ia mendefinisikan SISANYA prinsip-prinsip. Jika aplikasi memenuhi semua prinsip-prinsip tersebut, maka itu merupakan SISA aplikasi. Istilah Tenang diciptakan karena ppl habis kata SISANYA dengan memanggil mereka non-SISA aplikasi seperti ISTIRAHAT. Setelah itu istilah Nyenyak kelelahan juga. Saat ini kita berbicara tentang Api Web dan Hypermedia Api, karena sebagian dari apa yang disebut SISA aplikasi yang tidak memenuhi HATEOAS bagian dari antarmuka seragam kendala. SISANYA kendala adalah sebagai berikut:
POST https://example.com/api/v1/order
pesan dengan tubuh yang tepat. Setelah itu proses layanan pesan dan merespon dengan hasil yang tepat status HTTP header, misalnya201 - dibuat
dengan sukses. Untuk keterangan pesan dengan rinci metadata larutan standar dengan menggunakan format RDF, misalnya JSON-LD dengan SISA vocab, misalnya Hydra dan domain tertentu vocabs seperti schema.org atau lainnya data terkait vocab dan mungkin aplikasi kustom vocab tertentu jika diperlukan. Sekarang ini tidak mudah, yang's mengapa kebanyakan ppl gunakan dan HAL sederhana lainnya format yang biasanya hanya memberikan SISA vocab, tapi tidak ada data terkait dukungan.Tenang (rest) API pemrograman web menulis aplikasi dalam bahasa pemrograman apapun dengan mengikuti 5 software dasar gaya arsitektur prinsip-prinsip:
Dengan kata lain anda're tulisan sederhana point-to-point jaringan aplikasi melalui HTTP yang menggunakan kata kerja seperti GET, POST, PUT, atau MENGHAPUS dengan menerapkan Tenang arsitektur yang mengusulkan standarisasi interface masing-masing "sumber daya" memperlihatkan. Itu adalah apa-apa yang saat ini menggunakan fitur web dalam cara yang sederhana dan efektif (sangat sukses, terbukti dan arsitektur terdistribusi). Ini adalah sebuah alternatif untuk lebih mekanisme yang kompleks seperti SABUN, CORBA dan RPC.
Tenang pemrograman sesuai dengan arsitektur Web desain dan, jika dilaksanakan dengan baik, hal ini memungkinkan anda untuk mengambil keuntungan penuh dari scalable infrastruktur Web.
Di sini saya garis dasar untuk BERISTIRAHAT. Saya mencoba untuk menunjukkan pemikiran di balik masing-masing komponen dalam Tenang arsitektur agar memahami konsep yang lebih intuitif. Mudah-mudahan ini membantu mengungkap BERISTIRAHAT untuk beberapa orang!
ISTIRAHAT (rest) adalah desain arsitektur yang menguraikan bagaimana jaringan sumber daya (yaitu node yang berbagi informasi) yang dirancang dan dibahas. Secara umum, Tenang arsitektur membuatnya sehingga klien (meminta mesin) dan server (yang menanggapi mesin) dapat meminta untuk membaca, menulis, dan update data tanpa klien harus tahu bagaimana server beroperasi dan server dapat menyebarkannya kembali tanpa perlu tahu apa-apa tentang klien. Oke, keren...tapi bagaimana kita melakukan hal ini dalam praktek?
Yang paling jelas persyaratan adalah bahwa ada kebutuhan untuk sebuah bahasa universal dari beberapa macam sehingga server dapat memberitahu klien apa itu mencoba untuk melakukan dengan request dan server merespon.
Tetapi untuk menemukan apapun yang diberikan sumber daya dan kemudian memberitahu klien di mana sumber daya yang hidup, perlu ada cara universal yang menunjuk pada sumber daya. Ini adalah di mana Universal Resource Identifier (Uri) datang, mereka pada dasarnya adalah alamat unik untuk menemukan sumber daya.
Tapi arsitektur tidak berakhir di sana! Sementara di atas memenuhi kebutuhan dasar dari apa yang kita inginkan, kita juga ingin memiliki arsitektur yang mendukung volume tinggi lalu lintas sejak server tertentu biasanya menangani tanggapan dari sejumlah klien. Dengan demikian, kita tidak ingin membanjiri server dengan memiliki itu mengingat informasi tentang permintaan sebelumnya.
Oleh karena itu, kami memberlakukan pembatasan bahwa setiap permintaan-respon pasangan antara klien dan server adalah independen, yang berarti bahwa server tidak harus ingat apa-apa tentang permintaan sebelumnya (sebelumnya amerika serikat dan interaksi client-server) untuk menanggapi permintaan baru. Ini berarti bahwa kita ingin interaksi kita untuk menjadi tanpa kewarganegaraan.
Untuk lebih meringankan ketegangan pada server kami dari mengulangi perhitungan yang telah baru-baru ini dilakukan untuk klien yang diberikan, SISANYA juga memungkinkan caching. Pada dasarnya, caching berarti untuk mengambil snapshot dari respon awal yang diberikan kepada klien. Jika klien membuat permintaan yang sama lagi, server dapat menyediakan klien dengan snapshot daripada mengulang semua perhitungan yang diperlukan untuk membuat respon awal. Namun, karena ini adalah sebuah foto, jika foto sudah tidak berlaku--server menetapkan waktu berakhirnya di muka-dan respon telah diperbarui sejak awal cache (yaitu permintaan akan memberi jawaban yang berbeda dari respon cache), klien tidak akan melihat update sampai cache berakhir (atau cache dibersihkan) dan respon yang diberikan dari awal lagi.
Hal terakhir yang anda akan sering ke sini sekitar Tenang arsitektur adalah bahwa mereka yang berlapis-lapis. Kami telah benar-benar sudah secara implisit membahas persyaratan ini dalam diskusi kita tentang interaksi antara klien dan server. Pada dasarnya, ini berarti bahwa setiap lapisan dalam sistem kami berinteraksi hanya dengan lapisan yang berdekatan. Jadi dalam diskusi kami, klien lapisan berinteraksi dengan server kami layer (dan sebaliknya), tapi mungkin ada server lain lapisan yang membantu primer server memproses permintaan bahwa klien tidak secara langsung berkomunikasi dengan. Sebaliknya, server melewati pada permintaan seperti yang diperlukan.
Sekarang, jika semua ini terdengar akrab, kemudian besar. Hypertext Transfer Protocol (HTTP), yang mendefinisikan protokol komunikasi melalui World Wide Web merupakan implementasi dari gagasan abstrak Tenang arsitektur (atau sebuah instance dari SISA kelas jika anda're OOP fanatik seperti saya). Dalam implementasi ini berjalan-jalan, klien dan server yang berinteraksi melalui GET, POST, PUT, DELETE, dll., yang merupakan bagian dari bahasa universal dan sumber daya dapat diarahkan untuk menggunakan Url.
Jika saya harus mengurangi asli disertasi pada SISA hanya 3 kalimat-kalimat pendek, saya pikir berikut menangkap esensinya:
Setelah itu,'s mudah untuk jatuh ke dalam perdebatan tentang adaptasi, coding konvensi, dan praktik terbaik.
Menariknya, tidak ada menyebutkan HTTP POST, GET, MENGHAPUS, atau MENEMPATKAN operasi dalam disertasi. Yang harus menjadi seseorang yang's kemudian interpretasi "praktek terbaik" untuk "antarmuka seragam".
Ketika datang ke layanan web, tampaknya kita perlu beberapa cara untuk membedakan WSDL dan SOAP berbasis arsitektur yang menambahkan overhead yang cukup besar dan bisa dibilang banyak kompleksitas yang tidak perlu untuk antarmuka. Mereka juga memerlukan kerangka kerja tambahan dan alat-alat pengembang untuk menerapkan. I'm tidak yakin jika SISANYA adalah istilah yang terbaik untuk membedakan antara umum-pengertian antarmuka dan terlalu direkayasa interface seperti WSDL dan SOAP. Tapi kita perlu sesuatu.
SISANYA adalah pola arsitektur dan gaya penulisan didistribusikan aplikasi. Itu bukan gaya pemrograman dalam arti sempit.
Mengatakan anda menggunakan gaya ini mirip dengan mengatakan bahwa anda membangun rumah dengan gaya tertentu: misalnya Tudor atau Victorian. Kedua SISANYA sebagai perangkat lunak dan gaya Tudor atau Victorian sebagai sebuah rumah gaya dapat ditentukan oleh kualitas dan kendala-kendala yang membuat mereka. Misalnya SISA harus memiliki Client Server pemisahan di mana pesan self-describing. Tudor gaya rumah memiliki Tumpang tindih gables dan Atap yang tajam bernada dengan menghadap ke gables. Anda dapat membaca Roy's disertasi untuk mempelajari lebih lanjut tentang kendala-kendala dan kualitas yang membentuk SISANYA.
SISANYA tidak seperti rumah gaya telah memiliki waktu yang sulit menjadi konsisten dan praktis diterapkan. Ini mungkin telah disengaja. Meninggalkan implementasi aktual hingga desainer. Jadi anda bebas untuk melakukan apa yang anda inginkan, selama anda memenuhi batasan yang ditetapkan dalam disertasi anda membuat SELURUH Sistem.
Bonus:
Seluruh web didasarkan pada SISANYA (atau SISANYA adalah berbasis web). Oleh karena itu sebagai seorang pengembang web, anda mungkin ingin menyadari bahwa meskipun itu's tidak perlu untuk menulis yang baik web apps.
Saya pikir titik tenang adalah pemisahan statefulness ke lapisan yang lebih tinggi sementara membuat penggunaan internet (protokol) sebagai stateless lapisan transport. Kebanyakan pendekatan-pendekatan lain mencampur hal-hal.
It's terbaik pendekatan praktis untuk menangani perubahan-perubahan yang mendasar dari pemrograman di era internet. Mengenai perubahan-perubahan yang mendasar, Erik Meijer memiliki sebuah diskusi di acara berikut ini: http://www.infoq.com/interviews/erik-meijer-programming-language-design-effects-purity#view_93197 . Ia merangkum itu sebagai lima efek, dan menyajikan solusi dengan merancang solusi dalam bahasa pemrograman. Solusinya, bisa juga dicapai dalam platform atau sistem tingkat, terlepas dari bahasa. Tenang bisa dilihat sebagai salah satu solusi yang telah sangat berhasil dalam praktek saat ini.
Dengan gaya tenang, anda mendapatkan dan memanipulasi keadaan aplikasi di internet tidak dapat diandalkan. Jika gagal operasi saat ini untuk mendapatkan yang benar dan negara saat ini, yang dibutuhkan nol-validasi kepala sekolah untuk membantu aplikasi untuk melanjutkan. Jika gagal untuk memanipulasi keadaan, biasanya menggunakan beberapa tahap konfirmasi untuk menjaga hal-hal yang benar. Dalam pengertian ini, sisanya tidak sendiri seluruh solusi, kebutuhan fungsi-fungsi di bagian lain dari aplikasi web stack untuk mendukung kerja.
Mengingat sudut pandang ini, seluruh gaya tidak benar-benar terikat ke internet atau aplikasi web. It's solusi mendasar dari pemrograman situasi. Hal ini tidak sederhana, baik, itu hanya membuat antarmuka benar-benar sederhana, dan berupaya dengan teknologi lain yang luar biasa baik.
Hanya saya 2c.
Edit: Dua aspek penting:
Statelessness menyesatkan. Ini adalah tentang API tenang, tidak aplikasi atau sistem. Kebutuhan sistem yang akan stateful. Tenang desain adalah tentang merancang sebuah stateful sistem yang didasarkan pada bernegara API. Beberapa kutipan dari yang lain QA:
ISTIRAHAT, beroperasi pada sumber daya representasi, masing-masing diidentifikasi oleh URL. Ini biasanya bukan objek data, tapi objek yang kompleks abstraksi.
SISANYA merupakan singkatan dari "rest" yang berarti's semua tentang berkomunikasi dan memodifikasi negara dari beberapa sumber daya dalam suatu sistem.
Idempotence: Yang sering diabaikan bagian dari SISANYA adalah idempotency paling verba. Yang mengarah ke sistem yang kuat dan kurang saling ketergantungan tepat interpretasi semantics.
Ini adalah luar biasa panjang "diskusi" namun cukup membingungkan untuk sedikitnya.
IMO:
tidak Ada hal seperti itu sebagai nyenyak programing, tanpa bersama besar dan banyak bir :)
rest (ISTIRAHAT) adalah sebuah gaya arsitektur yang ditentukan dalam disertasi Roy Fielding. Ia memiliki sejumlah kendala. Jika anda Layanan/Klien menghormati mereka maka lebih Nyenyak. Ini adalah itu.
Anda dapat meringkas(signifikan) kendala-kendala untuk :
Ada lagi sangat baik pos yang menjelaskan hal-hal yang baik.
Banyak jawaban copy/paste informasi yang valid pencampuran itu dan menambahkan beberapa kebingungan. Orang-orang berbicara di sini tentang tingkat, tentang Nyenyak Uri(tidak ada hal seperti itu!), menerapkan metode HTTP GET,POST,PUT ... SISANYA adalah bukan tentang itu atau tidak hanya tentang itu.
Misalnya link - itu bagus untuk memiliki indah mencari API tapi pada akhirnya klien/server tidak benar-benar peduli link anda dapatkan/kirim itu adalah isi yang penting.
Di akhir Tenang klien harus dapat mengkonsumsi untuk setiap layanan Tenang asalkan format konten yang diketahui.
Pertanyaan lama, agak baru cara menjawab. Ada's banyak kesalahpahaman di luar sana tentang konsep ini. Saya selalu mencoba untuk mengingat:
Saya mendefinisikan tenang pemrograman seperti
Untuk menjadi tenang programmer anda harus mencoba untuk membangun aplikasi yang memungkinkan aktor untuk melakukan hal-hal. Tidak hanya mengekspos database.
Negara transisi kontrol hanya masuk akal jika client dan server menyepakati jenis media representasi dari sumber daya. Jika tidak ada's tidak ada cara untuk mengetahui apa yang's kontrol dan apa yang isn't dan bagaimana untuk mengeksekusi kontrol. YAITU jika browser tidak't tahu
<form>
tag html kemudian ada'd menjadi apa-apa bagi anda untuk mengirimkan ke keadaan transisi di browser anda.I'm tidak mencari untuk mempromosikan diri, tapi saya memperluas ide-ide ini untuk kedalaman yang besar dalam pembicaraan saya http://techblog.bodybuilding.com/2016/01/video-what-is-restful-200.html .
Kutipan dari pembicaraan saya adalah tentang sering disebut richardson model kematangan, i don't percaya pada tingkat, anda juga akan Tenang (tingkat 3) atau anda tidak, tapi apa yang saya suka menyebutnya tahu tentang hal itu adalah apa yang masing-masing tingkat tidak untuk anda di jalan anda untuk Tenang