Share via


Rate-Limit API 응답 시뮬레이션

Rate-Limit 헤더는 지정된 기간 내에 클라이언트가 수행할 수 있는 요청 수를 제한하기 위해 HTTP 응답에 사용됩니다.

서버는 클라이언트의 요청에 대한 응답으로 이러한 헤더를 전송하여 허용되는 요청 수와 제한에 도달하기 전에 남아 있는 요청 수를 나타냅니다.

RateLimit-Limit 응답 헤더 필드는 현재 시간 창에서 클라이언트와 연결된 요청 할당량을 나타냅니다. 클라이언트가 해당 제한을 초과하면 제공되지 않을 수 있습니다.

사용자 지정 속도 제한 지원

속도 제한을 초과하면 일부 API는 사용자 지정 오류 메시지와 함께 상태 코드를 반환하는 403 Forbidden 것과 같은 사용자 지정 동작을 사용합니다. 개발자 프록시를 사용하면 속성 값을 사용하여 이러한 사용자 지정 동작을 Custom 시뮬레이션할 whenLimitExceeded 수 있습니다.

다음 예제에서는 Devproxyrc 파일에서 RateLimitingPlugin을 구성하여 GitHub API에 대한 속도 제한을 시뮬레이션하는 방법을 구성하는 방법을 보여 줍니다.

{
  "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 에는 앱이 속도 제한에 도달했을 때 프록시가 반환하는 응답이 포함됩니다.

{
  "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"
  }
}

다음 단계

에 대해 자세히 알아봅니다 RateLimitingPlugin.