다음을 통해 공유


속도 제한 API 응답 시뮬레이션

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

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

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

사용자 지정 속도 제한 지원

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

다음 예제에서는 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에 대해 자세히 알아보세요.