HTTP란,
Hyper Text Transfer Protocol 의 약자로,
문서와 문서가 링크로 연결 되어 서로 데이터를 전송하는 통신 규약을 말한다.
http는 Request 와 Response 로 이루어 지는데,
Request는 웹에서 서버로 데이터를 요청 하는 것이고,
Response는 서버에서 웹으로 요청 받은 데이터를 응답하는 것을 말한다.
알기 쉽게 설명 하자면,
request는
- 좋아요를 하겠다고 요청
- 스크롤해서 화면 아래 있는 컨텐츠를 보고 싶다고 요청
- 로그인을 시켜달라고 요청
response는
- 좋아요 됐다고 응답
- 아래 컨텐츠를 응답
- 로그인 되었다고 응답
식으로 통신이 이루어 진다.
하지만 http의 특성으로 stateless
라는것이 있는데 이것은
token
이라는 것으로, 로그인을 완료했다는 정보를 가지고 있는 증표 같은 것으로 로그인 같은경우 매번 요청 하지 않아도 된다.request와 response는 세가지의 단계를 가지고 있는데,
- request는
1. Start Line
2. Headers
3. Body
- response는
1. Status Line
2. Headers
3. Body로 첫번째 단계만 다르고
메타데이터를 다루는 Headers와, 요청과 응답의 실제 데이터를 가지고 있는 Body는 같다
웹에서 요청을 하면, 서버에서 대답하는 형식이라 항상 처음은 request가 먼저 요청을 하는 방식이며, 그래서 1단계가 start line 이고, response의 1단계는 상태를 표시하는 status line 이다.
request 1단계 start line은 HTTP method를 사용하고, 요청할 서버를 targeting하고, Http version 정보를 담는다.
response 1단계의 status line은 Http version을 응답하고, status code와 status text를 응답해준다.
response 1단계 status line 에서는 다음과 같은 code들을 응답한다.
- Success
- 200 : OK
- 201 : Created
- Error
- 400 : Bad Request (오타가 있어서 잘못 요청 했을 때)
- 401 : Unauthorized (로그인이 필요한데 누군지 모르겠다고 에러를 띄우는것)
- 403 : Forbidden (권한이 없음)
- 404 : Not Found (요청한 데이터나 페이지가 없을 때)
- Server Error
- 500 : Internal Server Error (서버가 다운 되었을 때 에러)
등이 있으며, 에러 코드를 통해 어디에서 잘못되었는지 대략적으로 유추 할 수 있다.