Ya, ada banyak cara untuk belajar bagaimana membangun aplikasi web yang tenang dan tidak, tidak ada cara yang benar dan unik. RESTful bukan standar tetapi menggunakan seperangkat standar (HTTP, URI, Mime Type, ...).
Mulailah dengan ini: Bagaimana Saya Menjelaskan REST kepada istri saya
Kemudian, lanjutkan dengan ini: Cookbook Layanan Web RESTful
Dan kemudian mengerahkan seluruh upaya Anda untuk mengembangkan aplikasi web karena cara terbaik untuk belajar adalah melakukan eksperimen dan Anda dapat belajar banyak dari kesalahan Anda;)
Jangan khawatir jika aplikasi web pertama Anda tidak akan sepenuhnya tenang: Anda akan menemukan cara untuk melakukannya!
Jadi, mengutip Obi-Wan Kenobi, "semoga kekuatan itu menyertai Anda!" ;)
EDIT
Ok, izinkan saya lebih spesifik.
Anda ingin membuat webapp yang tenang, ya? Yah, seperti yang saya katakan ada banyak cara untuk melakukannya tetapi ini adalah pedoman utama.
Definisi
REST (Representational State Transfer) adalah gaya arsitektur perangkat lunak untuk sistem terdistribusi (seperti WWW). Ini bukan standar tetapi menggunakan seperangkat standar: HTTP, AJAX, HTML, URI, Mime Type, dll. Kita berbicara tentang representasi sumber daya, bukan tentang sumber daya itu sendiri. Diambil dari 'Bagaimana saya menjelaskan REST kepada istri saya':
Istri : Halaman web adalah sumber daya?
Ryan : Agak. Halaman web adalah representasi dari sumber daya. Sumber daya hanyalah konsep.
Kendala Arsitektur
- Client-Server : client dan server dipisahkan oleh Uniform Interface (dijelaskan di bawah).
- Stateless : komunikasi server-klien dilakukan tanpa menyimpan keadaan klien tertentu di server.
- Cachable : klien mungkin memiliki cache tanggapan dari permintaan yang sudah dibuat.
- Layered System : klien tidak tahu apakah itu terhubung langsung dengan end-server atau jika komunikasi dilakukan melalui perantara.
Antarmuka Seragam
- Identifikasi Sumber Daya : setiap sumber daya harus diidentifikasi oleh URI.
- Protokol : untuk mendapatkan klien komunikasi dan server, protokol harus dilakukan sebelumnya. Setiap permintaan mungkin memiliki Jenis MIME yang tepat (aplikasi / xml, teks / html, aplikasi / rdf + xml, dll.), Header kanan dan metode HTTP yang tepat (lihat deskripsi CRUD di bawah).
CRUD
Oke, kami melihat bahwa untuk mengidentifikasi sumber daya, kami dapat menggunakan URI, tetapi kami membutuhkan sesuatu yang lain untuk tindakan (menambah, memodifikasi, menghapus, dll.): Selamat datang di CRUD (Buat, Baca, Perbarui dan Hapus).
- Buat { HTTP: POST } { SQL: INSERT } => buat sumber daya baru
- Baca { HTTP: GET } { SQL: SELECT } => dapatkan sumber daya
- Perbarui { HTTP: PUT } { SQL: UPDATE } => ubah sumber daya
- Hapus { HTTP: DELETE } { SQL: DELETE } => hapus sumber daya
Sekarang, mengenai PUT dan HAPUS, beberapa masalah teknologi dapat muncul (Anda akan mendapatkannya dengan bentuk HTML): sering pengembang memintas masalah ini menggunakan POST untuk setiap permintaan 'PUT' dan 'HAPUS'. Secara resmi, Anda harus menggunakan PUT dan DELETE. Omong-omong, lakukan apa yang Anda inginkan. Pengalaman saya mendorong saya untuk menggunakan POST dan GET setiap waktu.
--- Bagian selanjutnya harus digunakan tetapi itu bukan ikatan REST: ini menyangkut Data Terkait ---
URI
URI abstrak dari detail teknis! Ucapkan selamat tinggal pada URI sebagai berikut:
http://www.example.com/index.php?query=search&id=9823&date=08272012
URI desain ulang! Ambil tautan di atas dan ubah sebagai berikut:
http://www.example.com/search/2012/08/27/9823
Itu jauh lebih baik, ya? Itu bisa dilakukan dengan:
Hal lain: gunakan URI yang berbeda untuk mewakili sumber daya yang berbeda:
Perhatikan : about.html dan about.rdf bukan file! Mereka bisa menjadi hasil dari transformasi XSLT!
Negosiasi Konten
Jika Anda telah mencapai titik ini, selamat! Mungkin, Anda siap untuk mendapatkan konsep yang lebih abstrak karena kami memasukkan rincian teknis Web Semantic;) Nah, ketika klien Anda menginginkan sumber daya, biasanya ia membuat permintaan berikut:
GET http://www.example.com/about
Accept: application/rdf+xml
Tetapi server tidak akan merespons dengan about.rdf karena memiliki URI yang berbeda ( http://www.example.com/about.rdf ). Jadi, mari kita lihat pola 303 ! Server akan mengembalikan ini:
303 See Other
Location: http://www.example.com/about.rdf
Dan klien akan mengikuti tautan yang dikembalikan sebagai berikut:
GET http://www.example.com/about.rdf
Accept: application/rdf+xml
Akhirnya, server akan mengembalikan sumber daya yang diminta:
200 OK
about.rdf
Jangan khawatir: aplikasi klien Anda tidak akan melakukan hal ini! Pola 303 harus dilakukan oleh aplikasi server dan browser Anda akan melakukan sisanya;)
Kesimpulan
Seringkali teorinya jauh, jauh dari praktik. Ya, sekarang Anda tahu cara mendesain dan mengembangkan aplikasi RESTful tetapi pedoman di atas hanyalah sebuah petunjuk. Anda akan menemukan cara terbaik untuk membangun aplikasi web dan mungkin itu tidak akan sama dengan yang diinginkan teori. Jangan peduli: D!
Bibliografi
Layanan Web Tenang, Sameer Tyagi
API REST harus berbasis hiperteks, Roy Thomas Fielding
Layanan web yang tenang: Dasar-dasarnya, Alex Rodriguez
Alur Kerja REST Webber