HTTP 상태 코드
HTTP 상태 코드 정리
배경
HTTP 상태 코드는 웹 서버와 클라이언트 간의 통신 상태를 나타내는 표준 응답 코드 이 코드는 클라이언트가 요청한 작업의 결과를 나타내며, 특정 오류 상황을 명확히 전달합니다.
상태 코드별 정리
클라이언트 오류 (4xx)
번호 | 상태 | 상황 |
---|---|---|
400 | Bad Request | 물품 나눔 서비스에서 담당자가 잘못된 고유 번호로 결과 보고서 조회를 요청하면 서버는 유효성 검사를 통해 잘못된 요청 에러를 반환합니다. 즉, 잘못된 값이 전달되면 400 상태를 반환합니다. |
401 | Unauthorized | 사용자가 로그인에 실패할 경우 401 상태를 반환합니다. 예를 들어, 로그인 기능이 있는 화면에서 API 응답값이 401이면 자동 로그아웃이 트리거됩니다. |
403 | Forbidden | 사용자가 권한 없는 메뉴에 접근할 때 403 상태를 반환합니다. 예를 들어, 사용자는 현관문 번호키를 알아도 방마다 허락(인가)이 필요합니다. 권한이 없는 방에 접근하려 할 때 403 상태를 반환합니다. |
404 | Not Found | 물품 기부 서비스에서 기부 영수증 신청 화면에 기본 공제 영수증 정보가 없다면 404 상태를 반환해야 합니다. 또한, 자신이 기부하지 않은 기부건 정보를 조회하려 할 때도 404 상태를 반환합니다. |
409 | Conflict | 리소스의 현재 상태와 충돌이 발생할 때 사용됩니다. 예를 들어, 두 사용자가 동시에 동일한 데이터를 수정하려 할 때 발생합니다. |
410 | Gone | 요청한 리소스가 더 이상 서버에 존재하지 않음을 나타냅니다. 예를 들어, 예전에 존재했던 페이지가 삭제되었을 때 사용됩니다. |
429 | Too Many Requests | 짧은 시간 내에 너무 많은 요청을 서버에 보냈을 때 |
성공 (2xx)
번호 | 상태 | 상황 |
---|---|---|
200 | OK | 요청이 성공적으로 처리되었습니다. |
201 | Created | 요청이 성공적으로 처리되었으며, 새로운 리소스가 생성되었습니다. |
202 | Accepted | 요청이 접수되었으나 아직 처리되지 않았습니다. |
203 | Non-Authoritative Information | 요청은 성공했으나, 원본 서버가 아닌 다른 소스에서 정보를 가져왔습니다. |
204 | No Content | 요청이 성공했으나, 반환할 콘텐츠가 없습니다. |
에러 (5xx)
번호 | 상태 | 상황 |
---|---|---|
503 | Service Unavailable | 서버가 일시적으로 요청을 처리할 수 없습니다. 예를 들어, DB가 잠긴 상태에서 API 요청이 있을 경우 503 상태를 반환합니다. |
504 | Gateway Timeout | 서버가 게이트웨이 또는 프록시로부터 적절한 응답을 받지 못해 요청 시간이 초과되었습니다. |
에러 알림 시스템 도입 시 고려사항
404 오류가 발생했을 때 데이터가 없는 상황을 오류로 간주해야 할지 고민 했었다. 경우에 따라 200번대 메시지를 보내는 것이 더 적절할 수 있습니다. 예를 들어, 요청은 성공했으나 제공할 내용이 없을 경우 204(No Content) 상태를 반환하는 것을 고려할 수 있습니다.
출처
상황
카카오 알림톡 url 의 A회원의 기부번호가 경로에 있다 B회원이 알림톡 url 을 통해서 접근했다B도 회원이라 로그인은 되었지만 다른사람의 기부를 조회 할 수 없는 상황이다 http 상태코드는?
이 경우에는 403 Forbidden
B 회원은 로그인된 사용자 → 인증은 완료됨 (401 아님) 하지만 B는 A의 기부정보에 접근할 권한이 없음 → 인가 실패 즉, 리소스가 존재하더라도 접근이 금지된 상태
승인이 되지 않은 기간의 기관 담당자도 담당자 목록에 보이고 있어이 데이터중 1개 데이터를 수정하려고 하는데아직기관 승인이 나지 않아서 담당자를 승인할 수 없는 상황이야 403 어때?
이 상황에서 403 Forbidden은 적절한 선택
기관 담당자가 존재하고 리스트에도 노출됨 하지만 해당 담당자가 소속된 기관이 아직 "승인되지 않음" 상태 따라서 해당 담당자에 대해 수정/승인 같은 작업은 허용되지 않음
-
403 Forbidden: 의미 요청한 주체(로그인 사용자)는 인증은 되어 있지만 현재 리소스(기관 담당자)의 상태로 인해 허용되지 않은 동작을 시도하고 있음 즉, 권한이 없거나, 리소스가 특정 상태(승인 전)라서 금지된 작업일 경우 → 403