지난번에 Restful API 관련하여 메모할 때, 간단히 HTTP통신에 대해 정리했었는데, 부족한 내용을 조금 추가해보려고 한다.
HTTP란
- Hyper text / Transfer / Prococol
- 문서와 문서가 링크로 연결 / html문서 전송 / 규약
- 컴퓨터끼리의 소통을 위한 통신규약
HTTP의 특징
- 요청과 응답(Request/Response)으로 이뤄짐
- Stateless : 각각의 http통신은 독립적 -> 이전의 상태를 모름 -> 매 통신마다 필요한 모든 정보를 담아서 요청을 보내야 함
- 연속된 데이터 처리가 필요한 경우가 있어 로그인토큰, 브라우저의 쿠키, 세션, 로컬스토리지와 같은 기술이 만들어짐
Request / Response 의 구조
Request 메세지 구조
- start line : 요청의 첫번째 줄에 해당하며, http method(GET, POST, DELETE 등)/ request target(목표 url)/ http version(현재는 주로 1.1) 정보가 담겨있다.
- header : 메타데이터
- Key:Value 형식으로 되어있음
- Host : 목표 주소
- User-Agent : 클라이언트 정보(브라우저 등)
- Contnet-Type : 요청 메시지의 body타입(application/json 등)
- Authorization: 회원의 인증/인가를 처리를 위한 로그인 토큰을 여기에 담음
- body : 요청의 실제 내용, method의 종류에 따라 없을수도 있음
- 보통 post(= put. patch)가 사용
Response 메시지 구조
- status line: 요청에 대한 처리상태와같은 정보를 나타냄
- http version(요청과 동일), status code(응답메시지의 상태코드), status text(상태에 대한 설명 코드)
- header : 요청과 동일하지만, User-Agent대신 Server헤더가 사용됨
03: body : 요청의 바디와 일반적으로 동일, JSON타입이 가장 많이 사용됨
HTTP Method
- GET : 정보를 받아오기만 할 때 사용
- POST : 데이터의 생성/ 수정시에 사용, body를 포함
- DELETE : 삭제요청시 사용
Response 상태코드
- 200 : 요청처리에 대한 응답이 문제 없을 때
- 201 : 잘 생성되었을 때, 대게 POST메소드의 요청을 처리 한 후에 온다.
- 400 : Bad Request, 요청이 잘 못 되었을 때, 주로 body에 보내는 내용이 잘 못 되었을 때
- 401 : Unauthorized, 인가되지 않은 사용자의 요청인 경우 (로그인 토큰 안 줬을 때)
- 403 : Forbidden, 권한이 없는 유저가 요청 한 경우
- 404 : Not Found, url이 존재하지 않음
- 500 : Internal Server Error, 서버에러