HTTP란?
클라이언트와 서버 연결 모델을 따르는 Protocol이다.
TCP/IP 윗 단계에서 동작한다.
80번 포트(aka well-know port)를 사용하면서 통신한다.
HTTP의 특징 중 하나가 클라이언트가 서버에 resource를 요청하고 응답을 받으면 연결을 끊는 것이다.
Connection: keep-alive
속성으로 연결 상태 유지 가능하다. 기존의 연결을 재사용하는 방식이다. HTTP 1.1부터 지속적 연결 상태가 기본이다. 해제를 위해서는 Connection: close
를 요청 Header에 수정하면 된다.또 다른 특징은, 서버는 클라이언트의 상태를 유지하지 않는것이다. 즉, 유저의 접속 기록을 유지하지 않기 때문에 이전의 접속한 유저와 동일한지 확인이 안된다. 각 클라이언트에 맞게 resource를 처리해주는 것은 불가능하다.
이 단점을 해결하기 위해 Cookies, Session, Token(OAuth, JWT) 등이 사용된다.
클라이언트의 요청 후 서버는 그에 맞는 응답상태에 따라 다음 중 하나의 상태코드로 응답한다 :
1XX (요청 관련 정보):
요청을 받았으면 작업과 관련된 정보 (예: 100 Continue, 102 Processing)2XX (성공):
요청 성공적으로 처리. (예: 200 OK, 201 Created, 202 Accepted)3XX (리다이렉션):
클라이언트의 요청에 따른 추가적인 동작 필요 메세지. (에:300 Multiple Choice, 301 Moved Permanently, 302 Found)4XX (클라이언트 오류):
클라이언트 측 오류. (예: 401 Bad Request, 402 Unauthorized, 403 Forbidden, 404 Not Found)5XX (서버 오류):
서버 측 오류. (예: 500 Internal Server Error, 501 Not Implemented, 503 Service Unavailable)메소드는 클라이언트가 서버에 요청방법을 정의한다. 요청을 어떻게 진행햐야하는 것을 나타낸다.
GET:
조회할 리소스를 요청. (CRUD중 Read)POST:
Body에 생성할 데이터를 넣어서 전송. 내용 생성. (CRUD중 Create)PUT:
Body에 수정할 데이터를 넣어서 전송. 내용 수정. (CRUD중 Update)PATCH:
PUT과 비슷한 기능이지만 일부만 수정한다는 점에서 다름. 내용 일부 수정. (Update)DELETE:
리소스 삭제 요청. (CRUD중 Delete)일부 응답 헤더 예:
Access-Control-Allow-Origin:
CORS를 허용 헤더Set-Cookie:
클라이언트 쿠키 설정Allow:
요청 가능한 Method 설정Last-Modified:
요청 리소스가 변경된 시각Location:
Redirect 되는 주소