클라이언트가 HTTP request를 서버에 보내면 서버는 HTTP response를 보내는 구조
http는 stateless여서 만약 이전의 요청/응답으로 로그인을 했어도 정보를 알 수 없음
따라서 응답에 필요한 정보를 모두 포함(첨부)해서 요청 해야함
이러한 정보를 쿠키 / 세션 등에 저장하고 있다가 요청이 오면 여기서 정보를 얻어서 첨부해서 보냄!
Start line, Headers, Body로 구성
HTTP request의 첫 줄
HTTP Methond, Request target, HTTP Version으로 구성되어있음
GET /search HTTP/1.1
위와 같은 부분이 start line
요청이 의도한 것을 정의하는 부분 (GET, POST, PUT, DELETE 등)
예시에서 GET이 메소드
요청이 전송되는 목적지 (목표 url)
위의 예시에서 /search 부분이 타겟
말 그대로 HTTP 버젼
위의 예시에서 HTTP/1.1 부분이 버젼
요청에 대한 부가 정보가 들어감
예시) HOST: google.com 면 Key = HOST, Value = google.com
start line의 request target과 headers의 host를 조합하면 url 주소가 나옴
예시) google.com/login ( Host=google.com , request target=/login )
Host
요청이 전송되는 target의 host url
User-Agent
요청을 보내는 클라이언트의 대한 정보 (예시 : 웹브라우저에 대한 정보)
Accept
해당 요청이 받을 수 있는 응답(response) 타입
Connection
해당 요청이 끝난후에 클라이언트와 서버가 네트워크 커넥션을 유지 할 것인지 아니면 끊을 것인지에 대해 지시하는 부분
Content-Type
해당 요청이 보내는 메세지 body의 타입 (예시 : JSON을 보내면 application/json)
Content-Length:
메세지 body의 길이
request와 마찬가지로 3부분으로 구성되어 있음
HTTP response의 구조는 Status line, Headers, Body
아래의 예시와 같이 구성되어있음
HTTP/1.1 404 Not Found
HTTP 버젼
예시에서 HTTP/1.1가 버젼
응답 상태를 나타내는 코드
숫자로 되어있음
위의 예시에서 404가 status code
응답 상태를 간략하게 설명해주는 부분
위의 예시에서 Not Found가 status text
데이터를 달라고 요청하는 메소드
데이터를 생성/수정할 때 요청하는 메소드
예시) 회원가입을 할 때 데이터를 POST로 생성
POST와 비슷한 메소드 / 데이터를 생성할 때 쓰임
요즘은 잘 사용하지 않는 추세
예시) 내 정보를 추가할 때 사용
데이터를 삭제할 때 사용하는 메소드
문제없이 실행 되었을때 보내는 코드
해당 URI가 다른 주소로 바뀌었을때 보내는 코드
해당 요청이 잘못된 요청일 때 보내는 코드
주로 요청에 포함된 input 값에 잘못된 값들이 보내졌을 때 사용되는 코드
예시) 전화번호를 보내야 되는데 text가 보내진 경우
유저가 해당 요청을 진행하기 위해서는 먼저 로그인 / 회원 가입 등이 필요하다는 것을 나타낼 때 쓰이는 코드
유저가 해당 요청에 대한 권한이 없다는 뜻
요청된 uri가 존재 하지 않는다는 뜻
서버에서 에러가 났을 때 사용되는 코드