Course content

Protokol HTTP secara detail

Click on the "Edit" button in the top corner of the screen to edit your slide content.

Gambaran Umum

Sejauh ini, Anda telah mempelajari cara membuat permintaan HTTP menggunakan Ktor. Anda juga telah mempelajari cara mengurai respons yang dikembalikan dari server dalam format JSON standar industri. Dalam bacaan ini, Anda akan belajar tentang beberapa kekuatan lain dari klien Ktor, seperti mengirimkan formulir dan mentransfer konten yang kompleks. Kamu juga akan belajar tentang menambahkan header dan body HTTP pada permintaanmu. Setelah menyelesaikan bacaan ini, Anda akan dapat melakukan sebagian besar operasi jaringan yang umum menggunakan Ktor.

Berbagai jenis permintaan HTTP

Sebelumnya, Anda telah mempelajari tentang protokol HTTP dan REST API. Anda telah menjelajahi berbagai operasi HTTP yang berbeda: GET, POST, PUT, PATCH, dan DELETE. Ktor menawarkan dua cara untuk mengeksekusi setiap operasi ini.

Operasi HTTP

Metode 1

Metode 2

GET

client.request("https://..."){

method =HttpMethod.Get

}

client.get("https://...")

POST

client.request("https://..."){

method =HttpMethod.Post

}

client.post("https://...")

PUT

client.request("https://..."){

method =HttpMethod.Put

}

client.put("https://...")

PATCH

client.request("https://..."){

method =HttpMethod.Patch

}

client.patch("https://...")

MENGHAPUS

client.request("https://..."){

method =HttpMethod.Delete

}

client.delete("https://...")

Yang mana yang Anda gunakan adalah preferensi pribadi, tetapi opsi yang terdaftar sebagai Metode 2 lebih ringkas.

Ktor membuat eksekusi operasi HTTP menjadi lebih mudah. Selanjutnya, Anda akan melihat bagaimana cara menambahkan lebih banyak data ke panggilan HTTP Anda.

Menambahkan header dan badan ke panggilan HTTP

Permintaan HTTP terdiri dari:

  • jenis operasi
  • jalur target
  • versi protokol yang akan digunakan
  • Header HTTP
  • dan secara opsional sebuah badan

Semua ini memberikan informasi kepada server tentang operasi yang sedang dijalankan.

Permintaan HTTP yang umum mungkin dalam format ini.

Respons HTTP juga serupa. Alih-alih jenis operasi dan jalur target, mereka mengembalikan kode status respons (200 adalah bentuk umum dan paling sederhana dari keberhasilan, 404 berarti sumber daya tidak ditemukan, 500 berarti kesalahan server internal dan, seterusnya) dan pesan status ("OK" atau "Tidak ditemukan", misalnya).

Respons yang umum terjadi adalah:

Header HTTP

Permintaan dan respons HTTP akan selalu membawa satu atau lebih header HTTP. Header HTTP terdiri dari nama tanpa huruf besar-kecil dan nilainya, dipisahkan dengan titik dua. Seperti:

Header permintaan HTTP memberikan informasi tambahan kepada server tentang operasi yang sedang dijalankan. Anda telah mempelajari beberapa di antaranya sebelumnya saat mempelajari autentikasi.

Selain autentikasi, header permintaan memberikan detail tentang klien yang melakukan operasi dan konfigurasinya, termasuk cookie yang disimpan. Header ini juga dapat berisi konteks di mana operasi dilakukan, kebijakan caching, dan sebagainya. Jika sebuah badan disediakan (Anda akan mempelajari lebih lanjut tentang ini nanti), header mungkin berisi detail tentangnya.

Contoh penambahan header HTTP ke sebuah permintaan di Ktor:

Setiap panggilan untuk menambahkan dalam blok header akan menambahkan satu header ke permintaan.

Untuk menambahkan cookie ke permintaan, Anda akan memanggil fungsi cookie:

Fungsi cookie mendukung beberapa argumen opsional tambahan, seperti masa berlaku, domain, dan jalur.

Seperti tajuk permintaan, tajuk respons memberikan detail tentang server yang merespons operasi. Header ini juga berisi informasi tentang koneksi yang dibuat dan respons itu sendiri, seperti jenis koneksi, cookie yang akan disimpan oleh klien, dan detail tentang badan respons apa pun.

Ini adalah cara Anda membaca header respons di Ktor:

Antarmuka Header memperlihatkan beberapa metode untuk melakukan kueri dan perulangan pada masing-masing header. Ktor juga menawarkan beberapa properti kenyamanan HttpResponse, seperti contentType, charset, dan setCookie.

Tubuh HTTP

Permintaan dan respons HTTP dapat menyertakan badan HTTP. Ini adalah muatan yang dilampirkan pada permintaan atau respons. Dalam permintaan, payload HTTP body biasanya digunakan dengan permintaan POST, PUT, dan PATCH, meskipun protokol mengizinkan penambahan HTTP body pada permintaan apa pun. Demikian pula, respons apa pun dapat menyertakan badan.

Tubuh permintaan atau respons dapat mencakup apa saja, mulai dari konten formulir hingga konten file atau struktur data (JSON dan XML adalah bentuk data yang umum dalam konteks ini).

Untuk melampirkan sebuah body ke sebuah permintaan menggunakan Ktor, Anda akan memanggil setBody:

Ktor mendukung model yang lebih kompleks daripada string, seperti yang akan Anda pelajari sebentar lagi. Ktor juga mendukung pengiriman formulir:

Gunakan fungsi submitForm untuk menyederhanakan implementasi pengiriman formulir ke server.

Tubuh respon adalah topik yang telah Anda pelajari sebelumnya dalam modul ini, Tubuh respon diperoleh dengan memanggil fungsi body. Tubuh respons mentah dapat diperoleh sebagai string atau ByteArray:

Untuk mengirim atau menerima HTTP body dengan tipe data yang lebih kompleks, Anda perlu menginstal plugin ContentNegotation, yang merupakan topik berikutnya dan terakhir dalam bacaan ini.

JSON, XML dan tipe data lainnya

Secara default, Ktor mendukung penulisan badan HTTP dalam format String dan membacanya sebagai String atau ByteArray.

Namun, apa yang terjadi jika Little Lemon baru saja memperkenalkan hidangan baru dan Anda ingin mengunggah hidangan baru tersebut ke server? Apakah Anda harus mengonversi objek Hidangan Anda menjadi string JSON secara manual?

Untungnya, Anda tidak perlu melakukannya. Ktor memungkinkan penginstalan plugin penerjemahan ke kliennya. Plugin ini mengetahui cara menerjemahkan objek ke dan dari string. Plugin ini disebut ContentNegotiation. Selain menerjemahkan data, plugin ini juga menegosiasikan transfer data antara klien dan server menggunakan header Accept dan Content-Type.

Sebelum menambahkan dukungan JSON ke kode Anda, dependensi berikut ini harus ditambahkan menggunakan Gradle:

Kemudian, untuk menambahkan kemampuan penyandian dan penguraian kode JSON ke klien Ktor Anda, Anda akan membuat kode seperti ini:

Klien yang dikonfigurasi dengan cara tersebut dapat membaca dan menulis objek, bukan hanya String dan ByteArray.

Kesimpulan

Ktor adalah pustaka jaringan yang serbaguna. Ini memungkinkan Anda untuk membuat permintaan HTTP apa pun yang Anda perlukan dan memproses respons apa pun yang bisa Anda dapatkan dari server dalam karier Anda sebagai pengembang Android. Para pengembang Android sangat bergantung pada library jaringan untuk menyelesaikan pekerjaan mereka. Anda sekarang harus terbiasa dengan menjalankan operasi HTTP yang paling umum.

Rating
0 0

There are no comments for now.

to be the first to leave a comment.