Name Last Update
src Loading commit data...
.gitignore Loading commit data...
Cargo.lock Loading commit data...
Cargo.toml Loading commit data...
README.md Loading commit data...

Commit 1 Reflection notes

Dalam fungsi handle_connection, kita memproses request yang masuk dari browser. Berikut adalah penjelasan metode yang digunakan:

  1. BufReader::new(&mut stream): Kita membungkus TcpStream menggunakan BufReader. Ini bertujuan untuk menambahkan buffering, sehingga pembacaan data menjadi lebih efisien karena kita bisa memanggil fungsi seperti .lines() untuk membaca data baris per baris secara langsung, daripada membaca byte demi byte secara manual.
  2. .lines(): Mengubah BufReader menjadi iterator yang mengembalikan setiap baris teks dari stream.
  3. .map(|result| result.unwrap()): Karena setiap baris yang dibaca mengembalikan tipe Result (bisa sukses atau error), kita menggunakan .map() dan .unwrap() untuk mengekstrak nilai String dari Result::Ok secara langsung (mengasumsikan tidak ada error saat pembacaan demi kesederhanaan).
  4. .take_while(|line| !line.is_empty()): HTTP request header selalu diakhiri dengan dua buah newline (baris kosong). Fungsi ini akan terus membaca baris dari stream sampai menemukan baris kosong tersebut, lalu berhenti. Ini mencegah program hang karena menunggu data yang tidak akan dikirim lagi oleh browser.
  5. .collect(): Mengumpulkan semua baris teks yang sudah diproses di atas ke dalam sebuah koleksi vektor (Vec<_>), yang kemudian kita simpan ke variabel http_request untuk di-print.