본문 바로가기
개발/Web

HTTP status code, RFC 정리

by amkorousagi 2021. 3. 16.

HTTP 상태 코드(status code)에 대해 정리해보겠다.

HTTP status code, RFC 정리
HTTP status code, RFC 정리

HTTP status code 란?

HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고 서버 에러.
- 공식 mozlia -

즉, 서버로 온 HTTP request(요청)에 대한 reponse(응답)의 상태를 숫자 코드로 표현하자고 약속한 것이다.

 

이게 왜 필요하냐?

조금 단적인 예가 될 수도 있겠지만,

js로 개발한 프런트나 백을 jest라는 npm 패키지를 통해 testing 한다고 해보자.

이때, 각 경로(e.g. /posting/note_today)에 request를 보내고,

올바른 status code가 response 되면 success 하는 식으로 짤 수도 있다.

 

이런 status code를 적절히 사용하는 것이 디버깅에 도움이 되기도 한다.

 

RFC(Request for Comments)란?

직역하면, 의견 요청. 의견, 비평을 기다리는 문서 정도로 의역할 수도 있겠다.

 

이제, 서로 통신을 하려면 protocol(규약)이 있어야 서로 무슨 의미인지 알아먹을 것 아닌가?

 

결국 하나하나 protocol을 사람이 규정하고 이를 지키면서 다들 통신을 하는 건데,

인터넷에 주인이 있는 것도 아니므로, 규정한다고 강제적인 법을 만드는 게 아니란 말이다.

 

그래서 함무라비 법전 같은 법전의 형태가 아니고,

RFC라는 비평을 기다리는 문서의 형태로 인터넷 협회에서 여러 전문가들의 의견을 모아 출판하여,

"표준"을 정하는 것이다.

 

여러 IT회사나 HW에서도, RFC형태로 자신의 제품과 통신/사용하기 위한 protocol을 설명하기도 한다.

 

현재 표준이 되고 있는 RFC는 RFC 2616이다.

 

RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1

[Docs] [txt|pdf] [draft-ietf-http...] [Tracker] [Diff1] [Diff2] [Errata] Obsoleted by: 7230, 7231, 7232, 7233, 7234, 7235 DRAFT STANDARD Updated by: 2817, 5785, 6266, 6585 Errata Exist Network Working Group R. Fielding Request for Comments: 2616 UC Irvine

tools.ietf.org

 

자주 쓰이는 status code

  •  200 OK : 요청이 성공적으로 되었다. method에 따라 다른 의미.
    • GET: 리소스를 불러와 바디에 전송.
    • HEAD: 개체 해더가 바디에 있음.
    • PUT 또는 POST: 수행 결과에 대한 리소스가 바디에 전송.
    • TRACE: 메세지 바디는 서버에서 수신한 요청 메시지를 포함.
  • 201 Created : 요청이 성곡적이며, 그 결과 새로운 리소스가 생성되었다. (POST나 PUT 요청 이후에)
  • 204 No Content : 요청에 대해 보내줄 수 있는 콘텐츠가 없다. GET 요청 이후에 해당하는 리소스가 없을 때.
  • 302 Found : 요청한 리소스의 URI가 일시적으로 변경됨.
  • 400 Bad Request : 잘못된 요청. 서버가 이해할 수 없는 문법.
  • 401 Unauthorized : 의미상 unauthenticated(비인증), 인증된 클라이언트만 받을 수 있는 리소스를 요청할 때
  • 403 Forbidden : 클라이언트가 접근할 권리를 가지고 있지 않음. 인증된 클라이언트지만 권한 부족.
  • 404 Not Found : 요청받은 리소스를 찾을 수 없을 때. 즉, 알려지지 않은 URL. 하지만, 다음의 여러 의미로 쓰인다.
    • API에서, 적절한 endpoint이지만 리소스가 존재하지 않음
      • e.g) /api/user/17에서 /api/user/:id는 맞는데, 17이라는 id를 가진 유저가 없음.
    • 인증받지 않은 클라이언트에게 리소스 존재 여부를 숨기기 위해 403 대신 사용
  •  500 Internal Server Error : 서버가 처리 방법을 모르는 상황.

 

 

적절한 status code를 써서 인터넷 표준을 지켜야겠다.

무슨 에러만 나면 전부 404로 돌리지 말고..

 

참고한 사이트:

 

HTTP 상태 코드 - HTTP | MDN

HTTP 상태 코드BCD tables only load in the browser HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응

developer.mozilla.org

 

'개발 > Web' 카테고리의 다른 글

세션과 쿠키, 상태, 로컬 스토리지  (0) 2021.03.27
HTTP method 정리  (0) 2021.03.16
DOM 은 무엇인가?  (0) 2021.02.28
웹팩과 바벨 개념과 역할  (0) 2021.02.28
웹개발 인트로 (개념, 구조, 공부방향)  (0) 2021.02.23

댓글