Hyper Text Transfer Protocol의 약자
웹상에서 client와 server가 서로 HTML 파일을 주고받을 수 있도록 하는 의사소통 방식(규칙) 혹은 약속 의미
또는 client와 server 간의 요청(request)과 응답(response)이 이뤄지는 동작 자체를 의미하기도 한다.
Request / Response(요청/응답)
HTTP 통신에서 말하는 소통의 핵심은 요청과 응답
이는 '발신자가 요청하고 수신자가 응답'하는 인간의 소통 방식이 컴퓨터 간의 소통 방식에도 그대로 적용된 것이라 할 수 있다.
Stateless
Stateless = State(상태) + less(없음)
각각의 HTTP 통신(요청/응답)은 독립적이기 때문에, 과거의 통신 내용은 기록으로 저장되지 않는다.
그 때문에 통신이 이뤄질 때마다, 매번 필요한 모든 정보를 담아서 요청을 보내야 한다.
여러 번의 통신이 진행되는 동안 연속된 데이터 처리가 필요한 경우(ex. 온라인 쇼핑몰에서 로그인 후 장바구니 기능을 이용), 로그인 토큰 또는 브라우저의 쿠키, 세션, 로컬스토리지 같은 기술을 사용해야 하는 이유도 여기에 있다.
Request 메시지의 구조
start line
ex) GET /login HTTP /1.1
headers: {key:value}
형식으로 이뤄졌다.
body: 해당 요청의 실제 내용. body가 주로 사용되는 메소드는 POST이다.
# ex) 로그인 시에 서버에 보낼 요청의 내용**
Body: {
"user_email": "jun.choi@gmail.com"
"user_password": "wecode"
}
status line
ex) HTTP/1.1 200 SUCCESS
HTTP Version: 요청(Request)의 HTTP버전과 동일
Status Code: 응답 메시지의 상태 코드
Status Text: 응답 메시지의 상태를 간략하게 설명해주는 텍스트
headers
body
자주 사용되는 HTTP Requst 메소드엔 세 가지가 있다.
GET
서버에서 데이터를 받아오기만 할 때 사용된다.
가장 간단하고 많이 사용되는 HTTP 메소드
POST
데이터를 생성/수정할 때 주로 사용되는 메소드
대부분의 경우 요청에 body가 포함돼서 보내진다.
DELETE
200: OK
가장 자주 보게 되는 상태 코드
백엔드 서버가 요청에 대해 문제없이 처리한 경우 나오는 응답코드
201: Created
무언가가 잘 생성됐을 때 보게 되는 상태 코드
POST요청에 따라 백엔드 서버에서 데이터가 문제없이 생성 또는 수정됐을 경우 보내는 코드
400: Bad Request
해당 요청이 잘못된 경우 보내는 상태코드
주로 요청 메시지의 Body에 담아 보내는 내용이 잘못됐을 때 사용되는 코드
ex) 전화번호를 보내야 하는데 숫자가 아닌 문자열의 주소가 Body에 담겼을 경우
401: Unauthorized
403: Forbidden
유저가 해당 요청에 대한 권한이 없다는 의미
접근 불가능한 정보에 접근했을 경우에 보이는 상태 코드
404: Not Found
500: Internal Server Error
서버에서 에러가 났을 경우의 Status Code
API 개발을 하는 백엔드 개발자들이 싫어하는 코드