HTTP 완벽가이드 <3>

김태완·2021년 9월 13일
0

HTTP 메시지의 흐름

  • HTTP는 인바운드와 아웃바운드라는 용어를 트랜잭션 방향을 표현하기 위해 사용한다.
  • 메시지가 서버로 향하는 것을 인바운드, 처리가 끝난 후 클라이언트에게 돌아오는 것을 아웃바운드라고 한다.
  • 메세지는 요청과 응답에 상관없이 다운스트림으로 흐른다.

메시지 문법

  • 메시지의 각 줄은 캐리지 리턴(\r), 개행 문자(\n)로 구성된 줄바꿈 문자열로 끝난다.
    캐리지 리턴 : 현재 커서를 줄 올림 없이 가장 앞으로 옮기는 동작
    라인 피드 : 커서는 그 자리에 두고 한 줄 올려 줄을 바꾸는 동작

    요청 메시지의 형식
    <메서드> <요청 URL> <버전>
    <헤더>
    ---- 빈 줄 ----
    <본문>

    응답 메시지의 형식
    <버전> <상태 코드> <사유 구절>
    <헤더>
    ---- 빈 줄 ----
    <본문>

시작줄

HTTP 메시지는 시작줄로 시작한다.

  • 요청 메시지의 시작줄은 서버에게 리소스에 대해 무언가를 해달라고 부탁하는 메서드, 대상을 지정하는 URL, 클라이언트가 사용하는 HTTP 버전을 알려준다.
  • 응답 메시지의 시작줄은 서버가 사용한 HTTP 버전, 응답의 상태 코드와 사유 구절이 있다.

HTTP 메서드

  • GET 메서드는 리소스를 요청한다.
  • HEAD 메서드는 GET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문은 포함되지 않는다.
  • POST 메서드는 데이터를 전송하기 위해 사용된다.
  • PUT 메서드는 URL 이름으로 새로운 리소스를 생성하거나 수정하기 위해 사용된다.
  • DELETE 메서드는 특정 리소스를 삭제하기 위해 사용된다.
  • OPTIONS 서버가 어떤 메서드를 수행 할 수 있는지 확인한다.
  • TRACE 메서드는 PROXY를 거쳐 서버에 도달하는 과적을 추적하기 위해 사용된다.
  • PATCH 메서드는 리소스의 특정 부분만을 수정하는데 사용된다.

상태코드

  • 클라이언트에게 무엇이 일어났는지 알려준다.

  • 100번대는 정보, 200번대는 성공, 300번대는 리다이렉션, 400번대는 클라이언트에러, 500번대는 서버 에러를 나타낸다.

  • 자주 사용되는 상태 코드

    상태 코드사유 구절의미
    200OK요청 정상, 요청한 리소스는 본문에 있다.
    201Created객체 생성완료, 리소스의 위치가 Location 헤더에 포함되어 있다.
    202Accepted요청을 완료됬으나 리소스에 대한 처리가 완료된지 않았다.
    204No Content요청은 성공했으나 제공할 본문은 없다. 주로 현재 웹 브라우저를 이동하지 않고 갱신시킬때 사용한다.
    300Multiple Choices요청한 URL이 여러 리소스가 존재할때 사용된다.
    301Moved Permanently요청한 리소스가 새로운 URL로 옮겨갔을때 사용된다. 새 위치는 Location 헤데에 있다.
    304Not Modified요청한 리소스 내용이 변경되지 않았을때 사용된다.
    400Bad Request클라이언트가 잘못된 요청을 보냈을때 사용한다.
    401Unauthorized클라이언트가 리소스 접근에 권한이 없을 경우 사용한다.
    403Forbidden요청이 금지됨을 나타낸다. 주로 서버가 금지 이유를 숨길때 사용된다.
    404Not Found클라이언트가 잘못된 URL을 요청할 때 사용된다.
    405Method Not Allowed지원하지 않은 메소드를 요청할때 사용된다.
    406Not Acceptable클라이언트가 받아들일 수 있는 리소스 종류에 부합하는 리소스가 없을때 사용된다.
    408Request Timeout요청 대기시간 초과
    500Internal Server Error서버 내부 오류
    502Bad Gateway게이트웨이 오류
    503Service Unavailable현재 요청을 처리할 수 없으나 나중에 가능함을 의미한다.
    504Gateway Timeout게이드웨이 시간 초과

헤더

  • 헤더는 클라이언트와 서버가 무엇을 하는지 결정하기위해 사용된다.
  • 특정 종류의 메세지에만 사용할 수 있는 헤더와 일반 목적으로 사용되는 헤더, 응답과 요청 메시지 양쪽 모두에게 정보를 제공하는 헤더가 있다.

0개의 댓글