Hypertext Transfer Protocol [HTTP] adalah bagian kehidupan dari sebuah website. Ini digunakan setiap kali Anda mentransfer dokumen, atau membuat AJAX
request. Tetapi yang mengejutkan HTTP relatif tidak dikenal di antara beberapa pengembang web.
Pengenalan ini akan menunjukkan bagaimana prinsip-prinsip perangkat desain, yang dikenal sebagai REST, didukung HTTP, dan memungkinkan Anda untuk menyatukan kekuatan penuh dengan membangun tampilan, yang dapat digunakan di hampir semua perangkat atau sistem operasi.
Tutorial Terbitan Ulang
Setiap beberapa minggu, kami mengunjungi kembali beberapa post yang menjadi favorit pembaca kami dari seluruh riwayat situs. Tutorial ini pertama kali diterbitkan pada bulan November, 2010.
Mengapa harus REST?
REST adalah cara sederhana untuk mengatur interaksi antara sistem secara independen.
REST adalah cara sederhana untuk mengatur interaksi antara sistem secara independen. Sudah semakin populer sejak tahun 2005, dan menginspirasi layanan desain, seperti API Twitter. Hal ini disebabkan fakta bahwa REST memungkinkan Anda untuk berinteraksi dengan diatasnya minimal dengan klien yang beragam seperti ponsel dan situs-situs lain. Secara teori, REST tidak terikat dengan web, tapi itu hampir selalu dilaksanakan seperti itu, dan terinspirasi oleh HTTP. Akibatnya, REST dapat digunakan di mana HTTP pun bisa.
Alternatifnya adalah membangun kebiasaan yang relatif kompleks di atas HTTP. Seringkali, ini mengambil bentuk dari seluruh bahasa berbasis XML yang baru. Contoh yang paling terkenal adalah SOAP. Anda harus belajar yang sama sekali baru dari kebiasaan sebelumnya, tapi Anda tidak pernah menggunakan HTTP secara penuh. Karena REST telah terinspirasi oleh HTTP dan bermain untuk daya guna, itu adalah cara terbaik untuk belajar bagaimana HTTP bekerja.
Setelah gambaran awal, kami akan memeriksa setiap blok bagian URL, kata kerja HTTP dan kode respon. Kami juga akan meninjau bagaimana menggunakannya dengan cara yang REST. Sepanjang jalan, kami akan mengilustrasikan teori dengan contoh aplikasi, yang mensimulasikan proses melacak data yang berhubungan dengan klien perusahaan melalui antarmuka web.
HTTP
HTTP adalah protokol yang memungkinkan untuk mengirimkan dokumen bolak-balik di web.
HTTP adalah protokol yang memungkinkan untuk mengirimkan dokumen bolak-balik di web. Protokol adalah seperangkat aturan yang menentukan pesan mana yang dapat ditukar, dan pesan balasan apa yang sesuai untuk orang lain. Protokol lain yang umum adalah POP3, yang mungkin Anda gunakan untuk mengambil email pada hard disk Anda.
Dalam HTTP, ada dua peran yang berbeda: server dan client. Secara umum, klien selalu memulai percakapan, dan server membalasnya. HTTP berbasis teks; yaitu, pesan yang pada adalah dasarnya bit teks, meskipun badan pesan juga dapat berisi media lainnya. Penggunaan teks memudahkan untuk memonitor pertukaran HTTP.
pesan HTTP terbuat dari header dan tubuh. Bagian tubuh seringnya dapat tetap kosong, berisi data yang Anda inginkan untuk mengirimkan melalui jaringan, untuk menggunakannya sesuai dengan petunjuk di header. Header berisi metadata, seperti pengkodean informasi; namun, dalam kasus permintaan, juga berisi metode HTTP yang penting. Dalam gaya REST, Anda akan menemukan bahwa data header sering lebih penting daripada tubuh.
Memata-matai HTTP saat Bekerja
Jika Anda menggunakan Alat Pengembang Chrome, atau Firefox dengan ekstensi terinstal Firebug, klik pada panel Net
, dan atur ke enabled
. Anda kemudian akan memiliki kemampuan untuk melihat rincian permintaan HTTP saat Anda menjelajah. Contoh:
Cara lain membantu untuk membiasakan diri dengan HTTP adalah dengan menggunakan klien khusus, seperti cURL.
Curl adalah alat baris perintah yang tersedia pada semua sistem operasi utama.
Setelah Curl Anda terinstal, ketik:
curl -v google.com
Ini akan menampilkan percakapan HTTP secara lengkap. Permintaan didahului oleh Kita memiliki dua hasil kemungkinan: Jika ada identifier lebih lanjut, kita menganggap itu adalah
nama klien, dan, sekali lagi, teruskan ke fungsi yang berbeda, tergantung pada Standarisasi kode respon HTTP adalah cara untuk menginformasikan klien tentang hasil permintaannya. Anda mungkin telah memperhatikan bahwa contoh aplikasi menggunakan Header mengandung semua jenis informasi meta; misalnya, pengkodean teks yang digunakan di tubuh pesan atau jenis body konten MIME. Dalam hal ini, kita secara
eksplisit menentukan kode respon HTTP. kode respon HTTP adalah cara standarisasi untuk menginformasikan klien tentang hasil permintaannya. Secara default, PHP membalas kode respon Server harus membalas dengan kode respon HTTP yang paling tepat; dengan cara ini, klien dapat mencoba untuk memperbaiki kesalahannya, dengan asumsi ada kesalahan. Kebanyakan orang akrab dengan kode respon umum Perlu diingat bahwa arti kode respon HTTP yang tidak tepat; ini merupakan konsekuensi dari HTTP itu sendiri yang menjadi agak generik. Anda harus berusaha untuk menggunakan kode respon yang paling sesuai dengan situasi yang dihadapi. Bisa dikatakan, jangan khawatir terlalu banyak jika Anda tidak dapat menemukan sesuatu yang tepat atau cocok. Berikut adalah beberapa kode respon HTTP, yang sering digunakan ketika menggunakan
REST:>
, sedangkan tanggapan didahului oleh handle_base[$method];
} else {
$this->handle_name[$method, $name];
}
} else {
// We only handle resources under 'clients'
header['HTTP/1.1 404 Not Found'];
}
metode
. Kami menggunakan pernyataan switch
, yang harus dihindari dalam aplikasi nyata:switch[$method] {
case 'PUT':
$this->create_contact[$name];
break;
case 'DELETE':
$this->delete_contact[$name];
break;
case 'GET':
$this->display_contact[$name];
break;
default:
header['HTTP/1.1 405 Method Not Allowed'];
header['Allow: GET, PUT, DELETE'];
break;
}
Kode Respon
header[]
PHP, melewati beberapa string tampak aneh sebagai argumen. Fungsi header[]
mencetak headers
HTTP dan memastikan bahwa mereka diformat dengan tepat. Header harus menjadi hal pertama pada respon, sehingga Anda tidak harus menambah apa pun sebelum Anda selesai dengan header. Kadang-kadang, HTTP server Anda mungkin dikonfigurasi untuk menambahkan header lain, selain yang Anda tentukan dalam kode Anda.200
, yang berarti bahwa respon berhasil.404 Not Found
, namun, ada lebih banyak respon yang
tersedia untuk menyesuaikan di berbagai macam situasi.
200 OK
Respon ini menunjukkan bahwa permintaan berhasil dibuat.
201 Created
Hal ini menunjukkan permintaan berhasil dan sumber daya telah dibuat. Hal ini digunakan untuk mengkonfirmasi keberhasilan suatu PUT
atau permintaan POST
.
400 Bad Request
Permintaan jelek. Hal ini terjadi terutama dengan POST
dan permintaan PUT
, ketika data tidak lulus validasi, atau dalam format yang salah.
404 Not Found
Respon ini menunjukkan bahwa sumber daya yang diperlukan tidak dapat ditemukan. Hal ini umumnya dikembalikan ke semua permintaan yang menunjuk ke sebuah URL tanpa sumber daya yang sesuai.
401 Unauthorized
Kesalahan ini menunjukkan bahwa Anda perlu melakukan otentikasi sebelum mengakses sumber daya.
405 Method Not Allowed
Metode HTTP yang digunakan tidak didukung untuk sumber daya ini.
409 Conflict
Hal ini menunjukkan adanya konflik. Misalnya, Anda menggunakan permintaan PUT
untuk menciptakan sumber daya yang sama dua kali.
500 Internal Server Error
Ketika semuanya gagal; umumnya, respon 500 digunakan ketika memproses kegagalan karena keadaan yang tak terduga pada sisi server, yang menyebabkan server menampilkan pesan error.
Contoh Aplikasi Latihan
Mari kita mulai denganmengambil informasi sederhana dari aplikasi Kita ingin rincian klien, 'jim
', jadi mari kita mengirim permintaan sederhana GET
ke URL untuk sumber daya
ini:
curl -v //localhost:80/clients/jim
Ini akan menampilkan pesan header lengkap. Baris terakhir dalam respon akan isi pesan; dalam hal ini, itu akan menjadi JSON yang mengandung alamat Jim [ingat bahwa menghilangkan nama metode akan menghasilkan permintaan GET, juga mengganti localhost: 80 dengan nama server dan port yang Anda gunakan].
Berikutnya, kita dapat memperoleh untuk semua informasi klien sekaligus:
curl -v //localhost:80/clients/
Untuk membuat klien baru, dengan nama Paul ...
curl -v -X PUT //localhost:80/clients/paul -d '{"address":"Sunset Boulevard" }
dan sekarang Anda akan menerima semua daftar klien yang berisi kata Paul sebagai konfirmasi.
Akhirnya, untuk menghapus klien:
curl -v -X DELETE //localhost:80/clients/anne
Anda akan menemukan kembali bahwa JSON tidak lagi berisi data apapun tentang Anne.
Jika Anda mencoba untuk mengambil klien yang tidak ada, misalnya:
curl -v //localhost:80/clients/jerry
Anda akan mendapatkan error 404, sementara, jika Anda mencoba untuk membuat klien yang sudah ada:
curl -v -X PUT //localhost:80/clients/anne
Anda malah akan menerima error 409.
Kesimpulan
Secara umum, sedikit asumsi diluar HTTP yang Anda buat, semakin baik.
Sangat penting untuk diingat bahwa HTTP dikonsep untuk berkomunikasi antar sistem, yang mana tidak ada yang dibagi selain memahami tentang protokol. Secara umum, semakin sedikit asums diluar HTTP yang Anda buat, semakin baik: ini memungkinkan jangkauan program lebih lebar dan perangkat untuk mengakses API Anda.
Saya menggunakan PHP dalam tutorial ini, karena kemungkinan besar itu
bahasa yang paling akrab bagi pembaca Nettuts+. Itu berarti, PHP, meskipun dirancang untuk web, mungkin bukan bahasa terbaik untuk digunakan saat bekerja dengan cara REST, karena menangani permintaan PUT
dengan cara yang sama sekali berbeda dari GET
dan POST
.
Di luar PHP, Anda mungkin akan mempertimbangkan hal berikut:
- Berbagai Ruby frameworks [Rails dan Sinatra]
- Terdapat dukungan REST yang sangat baik pada Python. Sederhananya Django dan WebOb, atau Werkzeug harus bekerja
- node.js memiliki dukungan yang sangat baik untuk REST
Di antara aplikasi yang mencoba untuk mematuhi prinsip REST, contoh klasiknya adalah Atom Publishing Protocol, meskipun itu benar-benar tidak terlalu sering digunakan dalam praktek. Untuk aplikasi modern, yang dibangun menggunakan filosofi HTTP sepenuhnya, bisa dilihat Apache CouchDB.
Selamat bersenang-senang!