Choosing Codes

헷갈리는 상태 코드는 클라이언트의 다음 행동으로 고른다

상태 코드는 이름만 외우면 흔들린다. 인증을 다시 해야 하는지, 권한을 바꿔야 하는지, 나중에 재시도해야 하는지를 기준으로 나누면 선명해진다.

401은 인증 챌린지, 403은 인가 거부
302는 관례상 메서드가 바뀔 수 있어 307/308과 구분한다
429와 503은 Retry-After로 재시도 힌트를 줄 수 있다
401WWW-Authenticate

인증 정보가 없거나 유효하지 않음

클라이언트는 로그인, 토큰 갱신, 인증 스킴 확인을 시도할 수 있다.
403Forbidden

인증은 됐지만 허용되지 않음

같은 인증 정보로는 접근할 수 없다는 의미에 가깝다.
302307308

리디렉션과 메서드 보존

메서드와 본문을 보존해야 하면 307 또는 308이 더 명확하다.
429503Retry-After

나중에 다시 시도할 수 있음

rate limit, 과부하, 유지보수 상황에서는 재시도 시점을 알려줄 수 있다.