> For the complete documentation index, see [llms.txt](https://learn.devlabss.my.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.devlabss.my.id/laravel/bab-2-mengenal-routing/2.4-penjelasan-alur-request-response.md).

# 2.4 Penjelasan Alur Request-Response

## Memahami alur request dan response

Setelah mencoba beberapa route, sekarang saatnya memahami alur dasarnya.

Setiap halaman web berjalan lewat satu siklus sederhana:

**browser meminta, server memproses, lalu server menjawab.**

Siklus ini disebut **request-response**.

### Apa itu request

Request adalah permintaan dari browser ke server.

Contohnya:

* membuka `http://e-library.test/kontak`
* mengakses `http://e-library.test/buku/12`
* menekan tombol kirim pada form

Setiap tindakan itu mengirim data ke server.

Data yang ikut terkirim bisa berupa:

* URL
* method seperti `GET` atau `POST`
* data form

### Apa itu response

Response adalah jawaban server untuk request tadi.

Jawaban ini bisa berupa:

* teks
* halaman HTML
* pesan error
* data JSON

Contoh yang sudah Anda lihat:

* route `/kontak` mengirim response teks
* route `/simpan-buku` menolak akses `GET` dan mengirim response error

### Gambaran paling sederhana

Bayangkan alurnya seperti ini:

```
Browser -> Request -> Laravel -> Response -> Browser
```

Atau jika memakai contoh route:

```
Browser -> GET /kontak -> Laravel -> "Hubungi kami..." -> Browser
```

### Sebelum mulai

Sebelum mengamati request-response, pastikan server proyek sedang berjalan.

Gunakan salah satu cara berikut:

* buka **Laragon** lalu klik **Start All**
* jalankan `php artisan serve` dari folder proyek

Jika server tidak aktif, browser tidak bisa mengirim request ke Laravel.

### Melihat request dan response di browser

Sekarang coba amati request yang benar-benar terjadi.

{% stepper %}
{% step %}

### Buka halaman route

Buka browser.

Lalu akses route yang sudah dibuat sebelumnya:

* `http://e-library.test/kontak`
* atau `http://127.0.0.1:8000/kontak`
  {% endstep %}

{% step %}

### Buka Developer Tools

Tekan `F12` di browser.

Lalu buka tab **Network**.
{% endstep %}

{% step %}

### Refresh halaman

Dengan tab **Network** tetap terbuka, tekan `F5`.

Anda akan melihat daftar request yang baru terjadi.
{% endstep %}

{% step %}

### Klik request `kontak`

Klik baris request yang namanya `kontak`.

Lalu perhatikan bagian **Headers**.
{% endstep %}
{% endstepper %}

Di sana, biasanya Anda akan melihat informasi seperti:

* **Request URL** — alamat yang dibuka
* **Request Method** — misalnya `GET`
* **Status Code** — misalnya `200 OK`

### Arti informasi di tab Network

Saat membuka `/kontak`, arti datanya sederhana:

* **Request URL** menunjukkan tujuan yang diminta browser
* **Request Method: GET** berarti browser sedang meminta data halaman
* **Status Code: 200 OK** berarti server berhasil menjawab tanpa error

Jadi, saat Anda melihat `200 OK`, artinya request berhasil diproses.

### Alur request di Laravel

Sekarang hubungkan hasil tadi dengan alur internal Laravel.

Saat browser membuka `/kontak`, urutannya kurang lebih seperti ini:

1. Browser mengirim request ke aplikasi Laravel.
2. Laravel menerima request dari pintu masuk aplikasi.
3. Laravel memeriksa route di `routes/web.php`.
4. Jika route cocok, Laravel menjalankan isi route atau controller.
5. Laravel menyiapkan hasil akhirnya.
6. Hasil itu dikirim kembali ke browser sebagai response.

Dalam bentuk ringkas:

```
Browser -> Laravel -> routes/web.php -> logika route -> response -> Browser
```

### Hubungannya dengan bab sebelumnya

Contoh dari bab sebelumnya:

* saat Anda membuka `/kontak`, request `GET` cocok dengan `Route::get`
* saat Anda membuka `/buku/12`, Laravel juga membawa nilai `12` ke route
* saat Anda membuka `/simpan-buku` lewat address bar, browser tetap mengirim `GET`

Karena route `/simpan-buku` hanya menerima `POST`, Laravel menolak request itu.

Itulah kenapa muncul error method tidak didukung.

### Status code yang perlu dikenali

Anda belum perlu menghafal semuanya.

Fokus dulu pada tiga status code ini:

* `200 OK` — request berhasil
* `404 Not Found` — route atau halaman tidak ditemukan
* `500 Internal Server Error` — ada error di sisi server atau kode aplikasi

{% hint style="info" %}
Saat debugging, status code membantu Anda menebak letak masalah. `404` biasanya masalah URL atau route. `500` biasanya masalah kode.
{% endhint %}

### Kenapa konsep ini penting

Jika paham request-response, Anda akan lebih mudah:

* membaca error
* membedakan masalah URL dan masalah kode
* memahami kenapa browser dan Laravel bisa memberi hasil berbeda

Konsep ini akan terus dipakai saat masuk ke controller, form, validasi, dan API.

### Poin evaluasi bab 2.4

Pastikan Anda sudah memahami poin berikut:

* Saya paham request adalah permintaan dari browser ke server.
* Saya paham response adalah jawaban dari server ke browser.
* Saya berhasil membuka tab **Network** di browser.
* Saya berhasil melihat request ke route `/kontak`.
* Saya paham arti `Request Method: GET` dan `Status Code: 200 OK`.
* Saya tahu `404` biasanya terkait route atau URL.
* Saya tahu `500` biasanya terkait error pada kode aplikasi.

Jika semua sudah jelas, lanjut ke [2.5 Mengatasi Error 404 Not Found](/laravel/bab-2-mengenal-routing/2.5-mengatasi-error-404-not-found.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://learn.devlabss.my.id/laravel/bab-2-mengenal-routing/2.4-penjelasan-alur-request-response.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
