rate limiting은 너무 많은 request로부터 server를 보호하고, HTTP caching은 이미 답한 request에 대해 작업을 반복하지 않게 한다. 둘 다 HTTP에서 표준화되어 있으며 둘 다 대규모 production API에 필수다.
rate limiting
server는 client가 창(window)마다 할 수 있는 request 수를 제한하고, 초과 시 **429 Too Many Requests**를 반환한다. 잘 처신하는 client가 스스로 조절할 수 있도록 헤더로 한도를 알린다:
HTTP/1.1 200 OK
RateLimit-Limit: 100
RateLimit-Remaining: 12
RateLimit-Reset: 30
HTTP/1.1 429 Too Many Requests
Retry-After: 30
{ "error": "rate limit exceeded, retry in 30s" }
