Jasa Bangunan Web REST Way

Roger L. Costello

Saya pertama kali akan memberikan pengenalan singkat untuk beristirahat dan kemudian menggambarkan bagaimana membangun layanan Web dalam gaya REST.

Apa SISA?

REST adalah istilah yang diciptakan oleh Roy Fielding di gelar Ph.D. disertasi [1] untuk menggambarkan gaya arsitektur sistem jaringan. REST adalah akronim berdiri untuk transfer Representational State.
Mengapa disebut Negara Transfer?

Web ini terdiri dari sumber daya. Sebuah sumber daya adalah setiap item yang menarik. Misalnya, Boeing Aircraft Corp dapat menentukan sumber daya 747. Klien dapat mengakses sumber daya yang dengan URL ini:
http://www.boeing.com/aircraft/747

Sebuah representasi dari sumber daya dikembalikan (misalnya, Boeing747.html). representasi menempatkan aplikasi klien dalam keadaan. Hasil klien melintasi hyperlink di Boeing747.html adalah sumber daya lain diakses. Representasi baru menempatkan aplikasi client ke belum negara bagian lain. Dengan demikian, aplikasi klien perubahan (transfer) negara dengan masing-masing representasi sumber daya -> Negara Transfer!

Berikut adalah penjelasan Roy Fielding dari makna Negara Transfer:

"Negara Transfer dimaksudkan untuk membangkitkan gambar bagaimana sebuah aplikasi Web yang dirancang dengan baik berperilaku: jaringan halaman web (virtual state-machine), di mana pengguna berlangsung melalui aplikasi dengan memilih link (negara transisi), sehingga halaman berikutnya (mewakili negara berikutnya aplikasi) yang ditransfer ke pengguna dan diberikan untuk mereka gunakan. "

Motivasi untuk ISTIRAHAT

Motivasi untuk ISTIRAHAT adalah untuk menangkap karakteristik dari Web yang membuat web yang sukses. Selanjutnya karakteristik ini sedang digunakan untuk memandu evolusi dari Web.

ISTIRAHAT - Sebuah Gaya Arsitektur, Bukan Standar

REST tidak standar. Anda tidak akan melihat W3C memadamkan spesifikasi REST. Anda tidak akan melihat IBM atau Microsoft atau Sun menjual toolkit pengembang SISA ini. Mengapa? Karena REST adalah hanya sebuah gaya arsitektur. Anda tidak bisa memendam gaya itu. Anda hanya bisa memahaminya, dan merancang layanan Web Anda dalam gaya itu. (Analog dengan client-server gaya arsitektur. Tidak ada standar client-server.)

Sementara REST tidak standar, itu tidak standar digunakan:

  • HTTP
  • URL
  • XML / HTML / GIF / JPEG / etc (Sumber Daya Representasi)
  • text / xml, text / html, image / gif, image / jpeg, dll (Jenis MIME)

The Classic Sistem SISA

Web adalah sistem SISA! Banyak dari mereka layanan Web yang Anda telah menggunakan ini bertahun-tahun - layanan buku-memesan, layanan pencarian online jasa kamus, dll - yang berbasis REST layanan Web. Sayangnya, Anda telah menggunakan REST, membangun layanan REST dan Anda bahkan tidak tahu itu.

SISA berkaitan dengan "gambaran besar" dari Web. Ini tidak berurusan dengan rincian pelaksanaan (misalnya, menggunakan servlets Java atau CGI untuk melaksanakan layanan Web). Jadi mari kita lihat contoh menciptakan layanan Web dari REST "gambaran besar" perspektif.

Bagian Web Services Depot

Bagian Depot, Inc (perusahaan fiktif) telah menyebarkan beberapa layanan web untuk memungkinkan pelanggan untuk:

  • mendapatkan daftar bagian
  • mendapatkan informasi rinci tentang bagian tertentu
  • mengirimkan Purchase Order (PO)

Mari kita mempertimbangkan bagaimana masing-masing layanan ini diimplementasikan secara tenang.

Dapatkan Parts Daftar

Layanan web membuat tersedia URL ke daftar bagian sumber daya. Misalnya, klien akan menggunakan URL ini untuk mendapatkan daftar bagian:
http://www.parts-depot.com/parts

Perhatikan bahwa "bagaimana" layanan web menghasilkan daftar bagian benar-benar transparan kepada klien. Semua klien tahu adalah bahwa jika ia / dia menyampaikan URL di atas maka dokumen yang berisi daftar bagian dikembalikan. Sejak pelaksanaan transparan kepada klien, Parts Depot bebas untuk memodifikasi pelaksanaan yang mendasari sumber daya ini tanpa mempengaruhi klien. Ini adalah kopling longgar.

Berikut dokumen yang klien menerima:

 

 

[Asumsikan bahwa melalui negosiasi konten layanan ditentukan yang diinginkan klien representasi sebagai XML (untuk mesin-ke-mesin pengolahan).] Perhatikan bahwa daftar bagian memiliki link untuk mendapatkan info rinci tentang setiap bagian. Ini adalah fitur kunci dari REST. Transfer klien dari satu negara ke yang berikutnya dengan memeriksa dan memilih dari antara URL alternatif dalam dokumen respon.

Dapatkan Detil Bagian data

Layanan web membuat tersedia URL untuk setiap bagian sumber daya. Misalnya, berikut adalah cara seorang klien meminta bagian 00.345:
http://www.parts-depot.com/parts/00345

Berikut dokumen yang klien menerima:

 



      00345
      Widget-A
      Bagian ini digunakan dalam perakitan FRAP 
      
      0.10
      10

 

Sekali lagi mengamati bagaimana data ini terkait dengan masih lebih banyak data - spesifikasi untuk bagian ini dapat ditemukan dengan melintasi hyperlink. Setiap dokumen respon memungkinkan klien untuk menelusuri untuk mendapatkan informasi lebih rinci.

menyerahkan PO

Layanan web membuat tersedia URL untuk mengirimkan PO. Klien membuat contoh dokumen PO yang sesuai dengan skema PO yang Parts Depot telah dirancang (dan dipublikasikan dalam dokumen WSDL). Klien mengajukan PO.xml sebagai payload dari HTTP POST.

Layanan PO merespon POST HTTP dengan URL ke PO diserahkan. Dengan demikian, klien dapat mengambil PO setiap saat sesudahnya (untuk memperbarui / mengedit itu). PO yang telah menjadi bagian dari informasi yang dibagi antara klien dan server. Informasi bersama (PO) diberikan alamat (URL) oleh server dan terkena sebagai layanan Web.

URL logis terhadap URL Fisik

Sebuah sumber daya adalah entitas konseptual. Sebuah representasi adalah wujud nyata dari sumber daya. URL ini:
http://www.parts-depot.com/parts/00345

adalah URL logis, bukan URL fisik. Dengan demikian, ada tidak perlu, misalnya, halaman HTML statis untuk setiap bagian. Bahkan, jika ada satu juta bagian kemudian satu juta halaman HTML statis tidak akan menjadi desain yang sangat menarik.

[Pelaksanaan rinci: Parts Depot bisa menerapkan layanan yang mendapat data rinci tentang bagian tertentu dengan menggunakan Servlet Java yang mem-parsing string setelah nama host, menggunakan nomor bagian untuk query database bagian, merumuskan hasil query sebagai XML, dan kemudian kembali XML sebagai payload dari respon HTTP.]

Sebagai soal URL gaya tidak harus mengungkapkan teknik pelaksanaannya digunakan. Anda harus bebas untuk mengubah pelaksanaan tanpa mempengaruhi klien atau memiliki URL menyesatkan.

SISA Layanan Web Karakteristik

Berikut adalah karakteristik REST:

  • Client-Server: gaya interaksi berbasis tarik: mengkonsumsi komponen tarik representasi.
  • Stateless: setiap permintaan dari klien ke server harus berisi semua informasi yang diperlukan untuk memahami permintaan, dan tidak bisa mengambil keuntungan dari setiap konteks yang tersimpan di server.
  • Cache: untuk meningkatkan respon efisiensi jaringan harus mampu dicap sebagai disimpan di cache atau non-disimpan di cache.
  • antarmuka seragam: semua sumber daya yang diakses dengan antarmuka generik (misalnya, HTTP GET, POST, PUT, DELETE).
  • sumber bernama - sistem terdiri dari sumber daya yang bernama menggunakan URL.
  • representasi sumber daya yang saling berhubungan - representasi dari sumber daya saling terhubung menggunakan URL, sehingga memungkinkan klien untuk kemajuan dari satu negara ke negara lain.
  • komponen berlapis - perantara, seperti proxy server, cache server, gateway, dll, dapat disisipkan di antara klien dan sumber daya untuk mendukung kinerja, keamanan, dll

Prinsip REST Layanan Web Desain

1. Kunci untuk menciptakan Layanan Web dalam jaringan SISA (yaitu, Web) adalah mengidentifikasi semua entitas konseptual yang ingin Anda mengekspos sebagai layanan. Di atas kita melihat beberapa contoh dari sumber: Daftar bagian, bagian data rinci, pesanan pembelian.

2. Buat URL untuk setiap sumber daya. Sumber daya harus kata benda, bukan kata kerja. Misalnya, tidak menggunakan ini:
http://www.parts-depot.com/parts/getPart?id=00345

Catatan kata kerja, getPart. Sebaliknya, gunakan kata benda:
http://www.parts-depot.com/parts/00345

3. Kelompokkan sumber daya menurut apakah klien hanya dapat menerima representasi dari sumber daya, atau apakah klien dapat memodifikasi (menambah) sumber daya. Untuk yang pertama, membuat sumber daya diakses menggunakan HTTP GET. Untuk kemudian, membuat sumber daya diakses menggunakan HTTP POST, PUT, dan / atau DELETE.

4. Semua sumber diakses melalui HTTP GET harus efek samping bebas. Yaitu, sumber daya harus hanya mengembalikan representasi dari sumber daya. Meminjam sumber daya harus tidak mengakibatkan memodifikasi sumber daya.

5. Tidak ada pria / wanita adalah sebuah pulau. Demikian juga, tidak ada perwakilan harus menjadi pulau. Dengan kata lain, menempatkan hyperlink dalam representasi sumber daya untuk memungkinkan klien untuk menelusuri untuk informasi lebih lanjut, dan / atau untuk mendapatkan informasi terkait.

6. Desain untuk mengungkapkan data yang secara bertahap. Jangan mengungkapkan semuanya dalam dokumen respon tunggal. Memberikan hyperlink untuk mendapatkan rincian lebih lanjut.

7. Tentukan format data respon menggunakan skema (DTD, W3C Schema, RelaxNG, atau Schematron). Bagi mereka layanan yang membutuhkan POST atau PUT untuk itu, juga menyediakan skema untuk menentukan format respon.

8. Jelaskan bagaimana layanan Anda akan dipanggil baik menggunakan dokumen WSDL, atau hanya sebuah dokumen HTML.

Ringkasan

Artikel ini menggambarkan SISA sebagai gaya arsitektur. Bahkan, itu adalah gaya arsitektur dari Web. SISA menjelaskan apa yang membuat Web bekerja dengan baik. Mengikuti prinsip-prinsip SISA akan membuat layanan Anda bekerja dengan baik dalam konteks Web.

Dalam artikel mendatang saya akan menulis tentang evolusi dari Web menggunakan prinsip-prinsip REST.

Pengakuan

Berkat Robert Leftwich dan Philip Eskelin untuk komentar sangat membantu mereka dalam menciptakan dokumen ini.

Referensi

[1] http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm