Bagikan melalui


Simulasikan respons API Pembatasan Tingkat

Sekilas
Tujuan: Menyimulasikan perilaku pembatasan tarif pada API apa pun
Waktu: 10 menit
Plugins:RateLimitingPlugin
Prasyarat:Menyiapkan Proksi Dev

Header Batas Tarif digunakan dalam respons HTTP untuk membatasi jumlah permintaan yang dapat dibuat klien dalam periode waktu tertentu.

Server mengirimkan header ini sebagai respons terhadap permintaan klien untuk menunjukkan berapa banyak permintaan yang diizinkan dan berapa banyak permintaan yang tersisa sebelum batas tercapai.

Bidang header respons RateLimit-Limit menunjukkan kuota permintaan yang terkait dengan klien dalam periode waktu saat ini. Jika klien melebihi batas tersebut, klien mungkin tidak dilayani.

Dukungan batas tarif kustom

Saat Anda melebihi batas laju, beberapa API menggunakan perilaku kustom, seperti mengembalikan 403 Forbidden kode status dengan pesan kesalahan kustom. Dev Proxy memungkinkan Anda mensimulasikan perilaku kustom ini dengan menggunakan Custom nilai untuk whenLimitExceeded properti .

Contoh berikut menunjukkan bagaimana Anda dapat mengonfigurasi bagaimana Anda dapat mengonfigurasi RateLimitingPlugin dalam file devproxyrc untuk mensimulasikan batas laju untuk API GitHub.

File: devproxyrc.json (bagian konfigurasi rateLimiting)

{
  "rateLimiting": {
    "headerLimit": "X-RateLimit-Limit",
    "headerRemaining": "X-RateLimit-Remaining",
    "headerReset": "X-RateLimit-Reset",
    "costPerRequest": 1,
    "resetTimeWindowSeconds": 3600,
    "warningThresholdPercent": 0,
    "rateLimit": 60,
    "resetFormat": "UtcEpochSeconds",
    "whenLimitExceeded": "Custom",
    "customResponseFile": "github-rate-limit-exceeded.json"
  }
}

customResponseFile berisi respons yang dikembalikan proksi saat aplikasi Anda mencapai batas tarif.

File: github-rate-limit-exceeded.json

{
  "statusCode": 403,
  "headers": [
    {
      "name": "Content-Type",
      "value": "application/json; charset=utf-8"
    }
  ],
  "body": {
    "message": "You have exceeded a secondary rate limit and have been temporarily blocked from content creation. Please retry your request again later.",
    "documentation_url": "https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits"
  }
}

Langkah berikutnya

Pelajari selengkapnya tentang RateLimitingPlugin.

Lihat juga