Penggunaan fungsi $HTTP pada PHP

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>, 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']; }

Kita memiliki dua hasil kemungkinan:

  • sumber daya adalah klien, dalam hal ini, kita kembali ke daftar lengkap
  • Ini adalah identifier lanjutan

Jika ada identifier lebih lanjut, kita menganggap itu adalah nama klien, dan, sekali lagi, teruskan ke fungsi yang berbeda, tergantung pada 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

Standarisasi kode respon HTTP adalah cara untuk menginformasikan klien tentang hasil permintaannya.

Anda mungkin telah memperhatikan bahwa contoh aplikasi menggunakan 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.

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 200, yang berarti bahwa respon berhasil.

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 404 Not Found, namun, ada lebih banyak respon yang tersedia untuk menyesuaikan di berbagai macam situasi.

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:

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!

Bài mới nhất

Chủ Đề