> 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-12-laravel-api-dasar/12.4-penjelasan-perbedaan-web-vs-api.md).

# 12.4 Penjelasan Perbedaan Web vs API

## Penjelasan perbedaan web vs API

Sampai titik ini, Anda sudah melihat dua cara Laravel memberi respons.

Kadang Laravel mengirim halaman.

Kadang Laravel mengirim data.

Di sinilah pentingnya membedakan **web** dan **API**.

### Perbedaan paling sederhana

Route web biasanya mengembalikan tampilan.

Route API biasanya mengembalikan data.

Contoh pola web:

```php
Route::get('/buku', [BukuController::class, 'index']);
```

Controller web biasanya berakhir dengan:

```php
return view('buku.index', compact('buku'));
```

Contoh pola API:

```php
Route::get('/buku', [BukuApiController::class, 'index']);
```

Controller API biasanya berakhir dengan:

```php
return response()->json($buku);
```

### Fokus dari masing-masing route

Route web fokus pada:

* tampilan halaman
* interaksi pengguna di browser
* Blade, layout, dan form

Route API fokus pada:

* pertukaran data
* response JSON
* konsumsi oleh client lain

### Perbedaan hasil akhirnya

Kalau Anda membuka route web, yang Anda lihat adalah antarmuka.

Kalau Anda membuka route API, yang Anda lihat adalah data mentah.

Artinya:

* web cocok untuk pengguna akhir
* API cocok untuk sistem atau frontend lain

### Apakah logika backend-nya berbeda total

Tidak.

Banyak fondasi tetap sama:

* route
* controller
* model
* query database
* validasi

Yang berubah terutama adalah bentuk output.

Satu mengarah ke `view()`.

Satu mengarah ke `json()`.

### Analogi sederhana

Bayangkan dapur restoran.

Data masakan dari dapur itu sama.

Tetapi cara penyajiannya bisa berbeda:

* untuk pelanggan makan di tempat, makanan disajikan di piring
* untuk layanan antar, makanan dikemas di kotak

Isinya bisa sama.

Bentuk penyajiannya yang berbeda.

Laravel web dan API bekerja dengan logika yang mirip.

### Kenapa pemahaman ini penting

Kalau Anda tidak membedakan web dan API, biasanya muncul kebingungan seperti:

* kenapa tidak ada Blade
* kenapa hasilnya hanya JSON
* kenapa route API tidak tampil seperti halaman biasa

Padahal itu memang perilaku yang diharapkan.

{% hint style="warning" %}
Jangan mengukur endpoint API dengan standar halaman web. Endpoint API memang tidak dibuat untuk tampil cantik. Endpoint API dibuat untuk mengirim data dengan jelas.
{% endhint %}

### Kapan memakai web, kapan memakai API

Untuk proyek belajar ini:

* pakai route web saat membangun halaman E-Library
* pakai route API saat ingin membuka data dari luar tampilan Blade

Di proyek nyata, keduanya sering hidup bersamaan.

### Ringkasan perbedaan cepat

```
web -> kirim HTML
api -> kirim JSON

web -> untuk browser dan tampilan
api -> untuk pertukaran data

web -> biasanya di web.php
api -> biasanya di api.php
```

### Poin evaluasi bab 12.4

Pastikan Anda sudah memahami hal berikut:

* Saya paham perbedaan output web dan API.
* Saya paham web fokus pada tampilan.
* Saya paham API fokus pada data.
* Saya paham keduanya tetap bisa memakai model dan controller Laravel.

Jika sudah rapi, lanjut ke [12.5 Refleksi & Langkah Belajar Selanjutnya](/laravel/bab-12-laravel-api-dasar/12.5-refleksi-and-langkah-belajar-selanjutnya.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-12-laravel-api-dasar/12.4-penjelasan-perbedaan-web-vs-api.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.
