백엔드 개발자에게 HTTP 에 대한 어느 정도의 이해는 반드시 필요하다고 생각한다. 적어도 클라이언트와 서버 간의 Request, Response 그리고 중요한 http 메서드와 상태 코드에 대해 아는 것이 개발에 있어 중요한 요건이 아닌가 싶다.
그렇기에, 이번 기회에 간단히 정리해 보기로 하였다.
Note) 리소스란?
리소스란 URL을 검색해서 받아온 텍스트, HTML, 이미지 등의 서버로부터 받아온 데이터들을 뜻한다.
구글 검색창에 배민
을 검색한 상황)
HTTP 메세지?
구조는 아래 그림과 같다.
요청과 응답 메세지는 start-line의 구조가 다른데, 이점을 살펴 보자.
- 요청 메세지는
GET /search?q=baemin HTTP/1.1
과 같이 HTTP 메서드, 쿼리, HTTP 버전으로 구성된다.- 응답 메세지는
HTTP/1.1 200 OK
와 같이 HTTP 버전, 상태 코드, 상태 문구로 구성된다.
가장 빈번하게 사용되는 메서드에는 GET, POST, PUT, PATCH, DELETE
가 있다.
각각이 무엇에 쓰이는 메서드인지는 기초적인 개념이기에 여기에서는 PUT
과 PATCH
의 다른 쓰임새에 대해 알아보기로 한다.
먼저 PUT
은 리소스를 완전 대체시키라는 요청이다. 따라서,
{
"name": "pepsi",
"price": 2000
}
과 같은 json 정보에 대해 오직 "name" 필드를 "코카콜라"로 바꾸어서 보낸다면
{
"name": "코카콜라"
}
이렇게 "price"에 대한 필드는 누락되어 덮어 씌워지게 될 것이다.
하지만 같은 요청을 PATCH
로 보낸다면, 데이터의 부분 수정이 가능하다.
{
"name": "코카콜라",
"price": 2000
}
즉, 이와 같은 결과로 이어질 것이다.
상태코드는 클라이언트에서 보낸 요청의 처리 상태가 어떻게 되었는지를 응답 메세지로 알려주기 위해 사용하는 코드이다.
100번대 ~ 500번대 로 이루어져 있다. 각각의 특징을 간략히 알아보자.
개발할 때, 상태 코드에 대한 설명이 필요하면 그때 그때 검색해서 찾아보면 되므로 아래 코드들을 모두 외울 필요는 없다. 그냥 알고 있기만 하자.
1xx (정보): 요청을 받았으며 프로세스를 계속 처리 중임을 알려줌.
- 실제로는 잘 쓰이지 않는다.
2xx (성공): 요청을 성공적으로 처리했음을 알려줌.
- 주요 코드
3xx (리다이렉션): 완료를 위해 클라이언트에서 추가적인 작업 조치가 필요한 상황.
- 주요 코드
: URL 변경 등으로 인해 바뀐 리소스에 대한 주소를 담은 Location 헤더를 아래 상태 코드와 함께 전송.
4xx (클라이언트 오류): 클라이언트에서 보낸 요청을 처리할 수 없음.
- 주요 코드
5xx (서버 오류): 서버에게 문제가 있음.
- 주요 코드
출처: [10분 테코톡] 코카콜라의 HTTP 메서드와 상태코드
https://www.youtube.com/watch?v=QcKEJFvPryI