HTTP

zenoan·2021년 3월 23일
0

HTTP란?
클라이언트와 서버 연결 모델을 따르는 Protocol이다.
TCP/IP 윗 단계에서 동작한다.
80번 포트(aka well-know port)를 사용하면서 통신한다.

특징

비연결성 (Connectionless)

HTTP의 특징 중 하나가 클라이언트가 서버에 resource를 요청하고 응답을 받으면 연결을 끊는 것이다.

  • 장점 : 서버에 부담을 줄일 수 있다. 더 많은 요청 처리 가능.
  • 단점 : Resource 요청마다 연결해야하는 비용 발생.
  • 단점을 해결하기 위해 요청 Header에 Connection: keep-alive 속성으로 연결 상태 유지 가능하다. 기존의 연결을 재사용하는 방식이다. HTTP 1.1부터 지속적 연결 상태가 기본이다. 해제를 위해서는 Connection: close를 요청 Header에 수정하면 된다.
    https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Connection

무상태성 (Stateless)

또 다른 특징은, 서버는 클라이언트의 상태를 유지하지 않는것이다. 즉, 유저의 접속 기록을 유지하지 않기 때문에 이전의 접속한 유저와 동일한지 확인이 안된다. 각 클라이언트에 맞게 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)

Method

메소드는 클라이언트가 서버에 요청방법을 정의한다. 요청을 어떻게 진행햐야하는 것을 나타낸다.

  • 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 되는 주소
profile
프론트엔드 개발자

0개의 댓글