자주쓰이는 HTTP 메소드 & HTTP 상태 코드
✍️ Today I Learned
- 자주 쓰이는 HTTP 요청 메소드와 요청에 대한 처리 결과값을 나타내는 HTTP 상태 코드를 알아보고 학습한 내용을 글로 남겨보려 한다.
1. HTTP 메소드
-
HTTP 메소드는 클라이언트가 서버에게 사용자 요청의 목적/종류를 알리는 수단이다.
-
최초의 HTTP에서 메소드의 종류는 GET 메소드 하나뿐이었고 그마저도 HTML 문서만 응답해주었지만, 이후 다양한 사용자 요청의 목적과 종류를 알리는 메소드들이 생겨났다.
1-1. HTTP 메소드 종류
-
GET : 리소스를 조회하는 용도이다.
- URL(URI) 형식으로 서버 측 리소스를 요청한다.
-
HEAD: GET과 비슷하지만 메시지 부분(본문)을 제외하고, 상태 줄과 헤더만 반환한다.
- 실제 리소스(문서)를 요청하는 것이 아니라, 리소스 정보를 요청한다.
-
POST : 요청 데이터 처리, 주로 데이터 등록에 사용한다.
- 요청 데이터를 HTTP 바디에 담아 웹서버로 전송한다.
-
PUT : POST와 비슷하지만 리소스를 대체 혹은 갱신 위주로 사용한다.
- 통상적으로 보다 세밀한 POST를 더 많이 사용한다.
-
PATCH : 리소스를 일부만 변경하는 용도이다.
-
DELETE : 리소스 삭제하는 용도이다.
-
OPTIONS: 대상 리소스에 대한 통신 가능 옵션을 설명하는 용도이다. (주로 CORS에서 사용)
-
CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정한다. (주로 사용하지 않는다)
-
TRACE: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행한다. (주로 사용하지 않는다)
2. HTTP 상태 코드
-
HTTP 상태코드는 클라이언트가 서버에게 요청을 보냈을때 서버는 응답을 보낸다.
그에 대한 응답의 결과를 크게 5개의 범주의 상태코드와 함께 반환하여 보내준다.
-
1xx(Informational response) : 서버가 요청을 받았으며 프로세스를 계속하라는 의미
-
2xx(Success) : 서버가 요청을 성공적으로 받았으며 인식하고 수용했다는 의미
-
3xx(Redirection message) : 요청 완료를 위해 추가 작업 조치가 필요하다는 의미
-
4xx(Client error response) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없다는 의미
-
5xx(Server errors) : 서버의 이유로 인해 유효한 요청에 대한 응답을 실패했다는 의미
-
2-1. 자주 쓰이는 HTTP 상태 코드 종류
-
이중 자주 쓰이는 상태코드를 꼽으라면 2xx 성공 코드와 4xx 클라이언트 에러 코드, 그리고 5xx 서버 에러 코드를 자주 볼 수 있는 상태코드라 꼽을 수 있다.
각 자리수 중에서 대표하는 상태 코드를 꼽아서 정리해보았다.
2-2. 2xx(Success) 코드
-
200(OK): 서버가 요청을 성공적으로 처리했을 시
-
201(Created): 요청을 성공적으로 처리하였으며 새로운 리소스가 생성되었을때, 일반적으로 POST나 PUT 요청 메소드 이후에 받게 된다.
-
202(Accepted): 서버가 요청을 접수했지만 아직 처리하지는 못했을 때
-
203(Non-Authoritative Information): 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공, 검증이 되지 않은 상태
-
204(No Content): 서버가 요청을 성공적으로 처리했지만 콘텐츠가 없을 때
2-2. 4xx(Client error response) 코드
-
400(Bad Request): 잘못된 문법으로 요청을 보냄
-
401(Unauthorized): 유효하지 않은 권한으로 요청을 보냄(ex. 토큰이 만료 된 이후 로그인이 필요한 API 요청이 들어옴)
-
402(Payment Required): 서버가 요청을 접수했지만 아직 처리하지는 못했을 때
-
403(Forbidden): 서버가 요청을 거부할 때, 클라이언트가 요청한 컨텐츠에 대해 접근할 권한이 없음 (ex. 특정 IP가 차단되었는데 해당 IP로 요청이 들어옴)
-
404(Not Found): 서버가 요청한 URI를 찾을 수 없음, 서버에 존재하지 않는 페이지에 대한 요구를 할 때
-
405(Method Not Allowed): 클라이언트가 보낸 메소드가 해당 URI에서 지원하지 않음 (ex. POST 메소드로만 요청이 가능한데 이를 지키지 않고 GET으로 요청이 들어옴)
-
409(Conflict): 서버가 요청을 수행하는 중에 충돌이 발생했을 때 (ex. 이미 서버에 존재하는 ID값으로 회원가입 요청이 들어옴)
2-3. 5xx(Server errors) 코드
- 500(Internal Server Error): 서버에 오류가 발생하여 요청을 수행할 수 없을 경우
오늘 느낀 점
-
사실 HTTP 메소드도 이렇게 많은 종류가 있는 줄 몰랐다.
(GET, POST, PATCH, DELETE만 써봄..)<조금 규모가 큰 서버를 개발하는 경우에는 다양한 HTTP 메소드를 염두하고 개발을 진행해야 할 듯하다.
-
그리고 상태 코드 또한 의미하는 바를 정확히 모르고 그냥 관행처럼 썼다.
상태 코드를 때에 따라 명확히 사용한다면, 에러 메시지를 적을 이유도 없이 그 의미 전달이 충분히 전달 될 듯 하다라는 생각이 들었다.
-
자주 사용하는 상태 코드들은 기억해 두는 것이 좋을 듯 하다.