> 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.2-membuat-route-get-dan-post.md).

# 2.2 Membuat Route GET dan POST

## Membuat route GET dan POST

Setelah memahami route dasar, sekarang saatnya mencoba dua method yang paling sering dipakai.

Di bab ini, Anda menulis satu route `GET` dan satu route `POST`, lalu menguji perilakunya.

### Perbedaan GET dan POST

Keduanya sama-sama route. Bedanya ada pada tujuan request.

* **GET** dipakai untuk mengambil atau menampilkan data.
* **POST** dipakai untuk mengirim atau menyimpan data.

Contoh paling sederhana:

* saat Anda membuka halaman `/kontak`, browser mengirim request `GET`
* saat Anda menekan tombol simpan pada form, aplikasi biasanya mengirim request `POST`

{% hint style="info" %}
Saat Anda mengetik alamat langsung di browser lalu menekan Enter, browser selalu mengirim request `GET`.
{% endhint %}

### Sebelum mulai

Pastikan kondisi berikut sudah siap:

* proyek `e-library` sudah berhasil dibuat
* proyek sudah terbuka di VS Code
* file `routes/web.php` bisa dibuka

Jika proyek belum bisa dijalankan, ulangi dulu [1.3 Membuat Proyek Baru](/laravel/bab-1-pengenalan-and-instalasi/1.3-membuat-proyek-baru.md) dan [1.5 Troubleshooting & Error Populer](/laravel/bab-1-pengenalan-and-instalasi/1.5-troubleshooting-and-error-populer.md).

### Menulis route baru di `web.php`

Tambahkan dua route berikut di bagian bawah file `routes/web.php`.

```php
Route::get('/kontak', function () {
    return 'Hubungi kami di: admin@elibrary.smk.sch.id';
});

Route::post('/simpan-buku', function () {
    return 'Data buku baru berhasil diproses dan disimpan!';
});
```

Lalu simpan file dengan `Ctrl + S`.

### Nyalakan server sebelum membuka browser

Setelah route selesai ditulis, jangan langsung menguji URL.

Pastikan dulu server Laravel sedang berjalan. Gunakan salah satu cara berikut.

{% stepper %}
{% step %}

### Opsi 1 — lewat Laragon

Buka **Laragon**.

Klik **Start All** jika service belum aktif.

Pastikan Apache dan MySQL berstatus aktif.
{% endstep %}

{% step %}

### Opsi 2 — lewat terminal proyek

Gunakan opsi ini jika alamat `.test` tidak bisa dibuka.

Buka terminal di folder proyek `e-library`, lalu jalankan:

```bash
php artisan serve
```

Jika berhasil, Laravel akan menampilkan alamat seperti:

```
http://127.0.0.1:8000
```

{% endstep %}
{% endstepper %}

{% hint style="warning" %}
Jika Anda memakai `php artisan serve`, jangan tutup terminalnya. Server akan berhenti jika terminal ditutup.
{% endhint %}

### Menguji route GET

Sekarang uji route `/kontak`.

1. Buka browser.
2. Jika memakai Laragon, akses `http://e-library.test/kontak`.
3. Jika memakai `php artisan serve`, akses `http://127.0.0.1:8000/kontak`.

Jika berhasil, browser menampilkan:

```
Hubungi kami di: admin@elibrary.smk.sch.id
```

Ini menunjukkan route `GET` berjalan normal.

### Menguji route POST

Selanjutnya, coba buka route `/simpan-buku` langsung dari browser.

Gunakan salah satu alamat berikut:

* `http://e-library.test/simpan-buku`
* `http://127.0.0.1:8000/simpan-buku`

Hasilnya bukan pesan sukses. Laravel justru menampilkan error seperti:

```
The GET method is not supported for this route. Supported methods: POST.
```

Error ini normal.

### Kenapa route POST error saat dibuka di browser

Masalahnya bukan pada route Anda.

Masalahnya ada pada cara mengujinya.

Saat alamat diketik langsung di browser, request yang dikirim selalu `GET`. Padahal route `/simpan-buku` hanya menerima `POST`.

Laravel menolak request itu karena method-nya tidak cocok.

{% hint style="warning" %}
Route `POST` tidak bisa diuji hanya dengan mengetik URL di address bar.
{% endhint %}

### Cara menjalankan route POST dengan benar

Route `POST` biasanya dipanggil dari:

* form yang memiliki method `POST`
* tool pengujian API seperti Postman

Di modul ini, form `POST` akan dipraktikkan nanti pada [7.2 Membuat Form Tambah Buku](/laravel/bab-7-fitur-create-and-validasi/7.2-membuat-form-tambah-buku.md).

Pengujian dengan Postman akan dibahas pada [12.3 Menguji API Menggunakan Postman](/laravel/bab-12-laravel-api-dasar/12.3-menguji-api-menggunakan-postman.md).

### Output yang harus terlihat

Setelah subbab ini selesai, hasil berikut seharusnya sudah terlihat:

* file `routes/web.php` berisi route `GET /kontak` dan `POST /simpan-buku`
* URL `/kontak` menampilkan teks kontak tanpa error
* URL `/simpan-buku` menampilkan error method jika dibuka langsung dari browser
* Anda bisa menjelaskan kenapa route `POST` tidak bisa diuji lewat address bar

### Poin evaluasi bab 2.2

Pastikan Anda sudah memahami poin berikut:

* Saya paham `GET` dipakai untuk mengambil atau membuka data.
* Saya paham `POST` dipakai untuk mengirim atau menyimpan data.
* Saya berhasil menambahkan route `/kontak` dan `/simpan-buku` di `routes/web.php`.
* Saya tahu server harus dinyalakan dulu sebelum membuka URL di browser.
* Saya tahu dua cara menjalankan proyek, yaitu lewat Laragon atau `php artisan serve`.
* Saya berhasil membuka route `/kontak` di browser.
* Saya paham kenapa route `/simpan-buku` error saat dibuka langsung lewat browser.

Jika semua sudah jelas, lanjut ke [2.3 Mengirim Data dari Route](/laravel/bab-2-mengenal-routing/2.3-mengirim-data-dari-route.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.2-membuat-route-get-dan-post.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.
