0Pricing
PHP Academy · Pelajaran

Pembatasan Laju dan Penerapan Versi API

Batasi permintaan dengan RateLimiter dan terapkan versi API dengan rapi.

Pembatasan Laju dan Penerapan Versi API adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.

Mengapa Membatasi Laju?

Pembatasan laju melindungi API dari penyalahgunaan, serangan DoS, dan klien yang tidak terkendali. Pembatasan ini memastikan pembagian sumber daya yang adil di antara semua pengguna.

Pembatas Laju Bawaan Laravel

Terapkan middleware throttle untuk membatasi permintaan per jangka waktu.

<?php
Route::middleware("throttle:60,1")->group(function () {
    // 60 requests per 1 minute per user/IP
    Route::apiResource("posts", PostController::class);
});

Pembatas Laju Khusus

Definisikan pembatas laju bernama dengan logika khusus di dalam penyedia layanan.

<?php
// In AppServiceProvider::boot():
RateLimiter::for("api", function (Request $request) {
    return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip());
});

// Apply:
Route::middleware("throttle:api")->group(fn() => ...);

Pembatasan Laju Bertingkat

Kembalikan batas yang berbeda berdasarkan paket pengguna yang telah diautentikasi.

<?php
RateLimiter::for("api", function (Request $request) {
    return match($request->user()?->plan) {
        "pro"  => Limit::perMinute(300)->by($request->user()->id),
        "free" => Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()),
        default => Limit::perMinute(30)->by($request->ip()),
    };
});

Header Respons Pembatasan Laju

Saat pembatasan diterapkan, Laravel mengembalikan HTTP 429 dengan header: X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After.

Strategi Pembuatan Versi API

Tiga pendekatan umum:

  1. Awalan URL: /api/v1/users
  2. Parameter kueri: /api/users?version=1
  3. Header Accept: Accept: application/vnd.myapp.v1+json

Awalan URL adalah pendekatan yang paling umum dalam API Laravel.

Pembuatan Versi dengan Awalan URL

Kelompokkan rute berdasarkan awalan versi.

<?php
Route::prefix("v1")->group(function () {
    Route::apiResource("users", \App\Http\Controllers\Api\V1\UserController::class);
});

Route::prefix("v2")->group(function () {
    Route::apiResource("users", \App\Http\Controllers\Api\V2\UserController::class);
});

Pengontrol Khusus Versi

Atur pengontrol berdasarkan versi di dalam subdirektori: App\Http\Controllers\Api\V1\ dan App\Http\Controllers\Api\V2\.

Menghentikan Dukungan Versi Lama

Tambahkan header Deprecation atau Sunset ke respons versi lama untuk memberi tahu klien tentang penghapusan yang akan datang.

<?php
// Middleware for v1 routes:
$response->headers->set("Deprecation", "version="v1"");
$response->headers->set("Sunset", "2026-01-01");

Sumber Daya API dan Pembuatan Versi

Gunakan sumber daya API khusus versi: V1\UserResource dan V2\UserResource untuk membentuk struktur respons yang berbeda pada setiap versi.

Menguji Pembatasan Laju

Dalam pengujian, palsukan pembatas laju untuk mencegah pengujian saling mengganggu.

<?php
RateLimiter::shouldReceive("tooManyAttempts")->andReturn(false);

Ringkasan

Terapkan throttle:60,1 untuk pembatasan laju dasar. Gunakan RateLimiter::for() untuk batas khusus dan bertingkat. Buat versi API dengan awalan URL, pengontrol khusus versi, dan sumber daya khusus versi.

Pemeriksaan Cepat

Kode status HTTP apa yang dikembalikan Laravel saat batas laju terlampaui?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pembatasan Laju dan Penerapan Versi API” gratis?

Ya — teks lengkap “Pembatasan Laju dan Penerapan Versi API” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pembatasan Laju dan Penerapan Versi API”?

Batasi permintaan dengan RateLimiter dan terapkan versi API dengan rapi. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai PHP Academy?

Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Pembatasan Laju dan Penerapan Versi API” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Rute API dan Controller Sumber Daya
  2. Sumber Daya API dan Respons JSON
  3. Autentikasi dengan Laravel Sanctum
  4. Pembatasan Laju dan Penerapan Versi API
← Kembali ke PHP Academy