HTTP란?
개발을 하다보면 HTTP를 자주 보게되요 그래서 HTTP에 대해서 잘 알고 있어야 훌륭한 백엔드 개발자가 될 수 있을거예요.

HTTP는 이런 거예요. 하나의 규칙인거죠. 우리가 인터넷 쇼핑몰에서 쇼핑할 때, 물건을 고르고 결제를 하죠? 그 과정에서 물건을 고르고, 장바구니에 담고, 결제 정보를 입력하는 일련의 단계들이 있어요. 이 모든 걸 인터넷에서 할 수 있게 해주는 것이 바로 HTTP, 즉 'HyperText Transfer Protocol'이라는 친구입니다.
HTTP가 하는 일은 간단해요. 웹 브라우저라는 쇼핑객이 웹 서버라는 쇼핑몰에 무언가를 요청합니다. "이 페이지 좀 보여줘!", "이 폼에 정보 좀 보내고 싶어!" 이런 식으로요. 그러면 웹 서버는 "알겠어, 여기 정보 있어!", "페이지 여기 있어!" 이렇게 응답을 해주는 거죠.
이런 식으로 '요청(Request)'과 '응답(Response)'이 이루어져요. 웹 브라우저는 요청을 보내고, 웹 서버는 그 요청에 맞는 응답을 보내주는 거죠. 이게 다 HTTP라는 규칙을 따르기 때문에 가능한 일이에요.
근데 HTTP는 좀 바쁜 친구예요. 한 번 일을 처리하고 나면 바로 잊어버립니다. 그래서 "어, 너 누구더라?" 하며 매번 새로운 요청을 처음 보는 것처럼 대해요. 이걸 '비연결성'이라고 해요. 그래서 우리가 로그인을 해도 페이지를 옮길 때마다 다시 로그인을 해야 하는 번거로움이 있죠. 이런 문제를 해결하기 위해 쿠키와 세션 같은 기술이 나왔어요.
그리고 HTTP는 꼼꼼한 친구예요. 요청이 잘 처리되었는지, 페이지를 못 찾는지, 서버에 문제가 있는지를 알려주는 '상태 코드'라는 걸 사용해요. 예를 들어, '200 OK'는 "모든 게 잘 처리됐어!"라는 뜻이고, '404 Not Found'는 "페이지를 찾을 수 없어!"라는 뜻이죠.
이렇게 HTTP는 인터넷에서 우리가 정보를 주고받을 수 있게 해주는 중요한 친구랍니다. 물건을 사고 팔 때 쓰는 그 쇼핑몰 규칙 같은 거죠. 상품을 보고, 정보를 주고받고, 결제를 완료하는 것처럼 말이에요!
HTTP 요청의 종류 (HTTP Methods)
HTTP에서 요청 방식을 정의한 것을 "메소드"라고 하고, 이는 웹 서버에 어떤 행동을 해달라고 요청하는 방법을 말해요. 여기 몇 가지 기본적인 메소드들이 있어요:
- GET: 데이터를 조회할 때 사용해요. 예를 들어, 쇼핑몰에서 상품 목록을 보거나, 뉴스 기사를 읽을 때 주로 사용되죠.
- POST: 데이터를 서버로 보내 새로운 정보를 생성할 때 사용해요. 예를 들어, 게시판에 글을 쓰거나, 회원가입을 할 때 필요해요.
- PUT: 서버에 있는 데이터를 업데이트할 때 사용해요. 예를 들어, 내 프로필 정보를 수정할 때 사용되죠.
- DELETE: 서버에서 데이터를 삭제할 때 사용해요. 예를 들어, 내가 쓴 글을 삭제하고 싶을 때 사용되죠.
- HEAD: GET과 비슷하지만, 서버의 헤더 정보만 가져올 때 사용해요. 데이터의 본문은 받아오지 않아요.
- OPTIONS: 서버가 지원하는 메소드를 확인할 때 사용해요. 이를 통해 어떤 HTTP 메소드가 해당 서버 혹은 리소스에서 사용 가능한지 알 수 있어요.
세상에 저도 HEAD랑 OPTION은 처음보네요. 다음에 써먹어 봐야겠어요.
HTTP 상태 코드 (Status Codes)
서버가 클라이언트의 요청을 어떻게 처리했는지 알려주는 코드를 말해요. 각 코드는 다른 의미를 가지고 있어요:
- 2xx (성공): 요청이 성공적으로 처리되었음을 의미해요.
- 200 OK: 요청이 성공적으로 처리됨.
- 201 Created: POST 요청으로 인해 리소스가 성공적으로 생성됨.
- 204 No Content: 요청은 성공했지만, 전달할 새로운 정보는 없음.
- 3xx (리다이렉션): 요청된 리소스의 위치가 변경되었음을 알려주는 코드예요.
- 301 Moved Permanently: 요청한 리소스의 URL이 영구적으로 변경되었음.
- 302 Found: 요청한 리소스가 일시적으로 다른 URL에 위치함.
- 4xx (클라이언트 오류): 요청에 오류가 있어 서버가 요청을 처리할 수 없음.
- 400 Bad Request: 서버가 요청을 이해할 수 없음.
- 401 Unauthorized: 인증이 필요한 페이지에 대한 요청.
- 404 Not Found: 요청한 리소스를 찾을 수 없음.
- 5xx (서버 오류): 서버 자체의 문제로 요청을 처리할 수 없음.
- 500 Internal Server Error: 서버 내부 오류로 요청을 처리할 수 없음.
- 503 Service Unavailable: 서버가 일시적으로 요청을 처리할 수 없음, 주로 유지보수 중이나 서버 과부하 때 발생.
이 정보들을 통해 HTTP가 어떻게 웹에서 데이터를 주고받는 지휘자 역할을 하는지 더 잘 이해하실 수 있을 거예요. 웹 브라우저와 서버가 어떻게 대화하는지, 그리고 각 상황에 어떤 메소드와 코드가 사용되는지 알아두면, 백엔드 개발 시 많은 도움이 됩니다!