HTTP는 Hyper Text Transfet Protocol의 약자로 컴퓨터끼리 HTML로 만든 웹페이지를 주고받으며 소통할때 지켜야할 규약이다.
Request / Response
편지를 발신자가 보내면 수신자가 보낸 내용에 대해 답변을 하듯이 컴퓨터들끼리의 소통에도 요청을 보내면 응답을 하는 식으로 진행된다.
StateLess
말그대로 HTTP의 특징 중 하나는 상태가 없다라는 뜻이다. 각각의 HTTP 통신은 독립적이기 때문에 이전에 어떤 통신을 보내고 받았는지(요청/응답) 전혀 알 수 없다. 이는 매통신마다 데이터를 담아 요청을 보내야하는 번거로움이 발생하기 때문에 연속된 데이터 처리가 필요한 경우 브라우저 쿠키에 로그인 토큰을 저장할 수 있는 기술을 사용할 수 있다.
Request 메세지 구조 (프론트엔드 → 백엔드)
요청 메세지는 start line - headers - body 세부분으로 구성되어 있다
start line : 데이터 처리방식 method, 데이터가 보내질 곳 주소, http 버전을 표기한다
**GET /login HTTP/1.1**
Get
부분 : HTTP Method로 body 부분에 담긴 클라이언트 데이터를 서버에서 어떻게 처리해야하는지 method로 알려주는 방식이다. 주도 GET, POST, DELETE 가 많이 쓰인다.
login HTTP
부분 : 데이터가 전송될 서버의 주소
1.1
부분 : 사용되는 HTTP Version을 나타낸다. 주로 1.1 버전이 널리 쓰인다.
Headers : 보내는 요청에 대한 추가 정보를 담는 부분
Headers: {
**Host**: 요청을 보내는 목표(타겟)의 주소. 즉, 요청을 보내는 웹사이트의 기본 주소가 된다
(ex. www.apple.co.kr)
**User-Agent**: 요청을 보내는 클라이언트의 대한 정보 (ex. chrome, firefox, safari, ~~explorer~~)
**Content-Type**: 해당 요청이 보내는 메세지 body의 타입 (ex. application/json)
**Content-Length**: body 내용의 길이
**Authorization**: 회원의 인증/인가를 처리하기 위해 로그인 토큰을 Authroization 에 담는다
}
content-type, content-length
는 바디에 들어가게 될 데이터의 타입을 결정해준다. (json이면 데이터가 json 형태로 보여지게끔)
Body : 요청에 대한 실제 데이터가 담긴다
Body**:** {
"user_email": "jun.choi@gmail.com"
"user_password": "wecode"
}
주로 요청 메소드가 POST인 경우 나타난다.
Response 메세지 구조 (백엔드 → 프론트엔드)
응답 메세지도 status line - headers - body 세부분으로 구성되어 있다.
Status line : HTTP 버젼, 응답 상태코드, 코드에 대한 메세지를 보여준다
**HTTP/1.1 200 SUCCESS**
HTTP/1.1
부분 : 요청했던 HTTP 버젼과 동일
200
부분 : 응답 상태 코드
SUCCESS
: 응답 상태를 간략히 설명해주는 메세지
Headers : 응답에 대한 추가적인 정보를 담고있는 부분
Body : 요청하는 메소드 타입에 따라 body는 항상 존재하지 않는다.
//로그인 요청에 성공한 경우 토큰을 반환해준다.
Body: {
"message": "SUCCESS"
"token": "kldiduajsadm@9df0asmzm" (암호화된 유저의 정보)
}
GET
필요한 데이터를 서버로부터 받아(GET)올 때 사용하는 메소드로 데이터를 받아오기만 할때 사용된다.
POST
데이터를 생성 / 수정 할 때 주로 사용되는 메소드로 바디부분에 관련된 데이터 값을 포함하여 보낸다.
DELETE
특정 데이터를 서버에 삭제 요청할때 보내는 메소드.
200 : OK
주로 GET요청 성공, 업데이트 성공시 반환되는 코드이다
201 : Created
데이터베이스에 없었던 새로운 데이터가 생성되었을때 반환되는 코드이다 (주로 POST 요청에서 이루어짐)
400 : Bad Request
잘못된 요청인 경우 반환되는 코드
401 : Unauthorized
권한이 없는 유저의 정보를 보냈을때 반환되는 코드
403 : Forbidden
접근이 불가능한 곳에 접근하여 권한이 없는 경우 반환되는 코드
404 : Not Found
요청된 url이 존재하지 않는 경우
500 : Internal Server Error
서버에서 문제가 발생한 경우 반환되는 코드