[Network] - HTTP Method

J._.n·2024년 8월 26일

[CS]

목록 보기
1/1
post-thumbnail

HTTP(HyperText Transfer Protocol)

텍스트 기반의 통신 규약으로 인터넷에서 클라이언트와 서버 간의 통신을 가능하게 하는 통신 규약이다.
  • HTML, TEXT
  • IMAGE, 음성, 영상, 파일
  • JSON, XML(API) 등
  • 거의 모든 형태의 데이터 전송이 가능하다.

    HTTP의 통신 구조


    HTTP 통신은 클라이언트(Front-End)와 서버(Back-End)로 나뉘어진 구조로 되어 있다.
    클라이언트가 요청(Request)하면 서버가 응답(Response)하는데 이는 각자의 역할에 집중하여 서버에서는 복잡한 비즈니스로직이나 데이터를 다루고 클라이언트는 UI를 그리는데만 집중할 수 있는 구조이기 때문이다.

    HTTP 상태 코드

    상태 코드는 클라이언트의 요청에 대한 처리 상태를 응답에서 알려주는 기능이다.

    • 1xx (정보) : 요청을 받았으며 프로세스를 계속 진행중이라는 의미
    • 2xx (성공) : 요청을 성공적으로 받았고, 받아들여졌다는 의미
    • 3xx (리다이렉션) : 이 요청을 완료하기 위해서는 리다이렉션이 필요하다는 의미
    • 4xx (클라이언트 오류) : 클라이언트의 요청이 올바르지 않다는 의미
    • 5xx (서버 오류) : 서버가 응답할 수 없다는 의미이며, 요청이 올바른지의 여부는 알 수 없음

    HTTP 메시지

    • 시작 라인(Start Line)
      • Method : GET / POST / PUT / DELTE 등 (HTTP 메서드)
      • PATH : 요청 대상 경로
      • Protocol : 사용된 HTTP 버전
    • 헤더(Header) : HTTP 전송에 필요한 부가 정보(메시지 크기, 압축 여부, 인증, 브라우저 정보, 서버 정보, 캐시 등)
    • 공백 라인(Empty Line) : 헤더와 바디를 구분하기 위한 라인
    • 바디(Message Body) : 실제 전송할 데이터(HTML 문서, 이미지, 영상, JSON 등)
    • 시작 라인(Start Line)
      • Protocol : 사용된 HTTP 버전
      • Status Code : HTTP 상태 코드
      • Status Message : Status Code에 대한 메시지
    • 헤더(Header) : HTTP 전송에 필요한 부가 정보(메시지 크기, 압축 여부, 인증, 브라우저 정보, 서버 정보, 캐시 등)
    • 공백 라인(Empty Line) : 헤더와 바디를 구분하기 위한 라인
    • 바디(Message Body) : 전송 받은 데이터(HTML 문서, 이미지, 영상, JSON 등)

    HTTP 메서드

    클라이언트와 서버 사이에서 이루어지는 요청(Request)와 응답(Response) 데이터를 전송하는 방식이다.

    주요 메서드

    • GET : 리소스 조회
    • POST : 요청 데이터 처리, 데이터 등록등에 사용
    • PUT : 리소스 대체, 해당 리소스 없을 경우 생성
    • PATCH : 리소스를 일부만 변경
    • DELETE : 리소스 삭제

    GET방식과 POST 방식
    GET 방식은 요청하는 데이터가 HTTP Request Message의 Header 부분에 담겨 전송되기 때문에 URL의 길이제한이 있어 데이터의 크기가 제한적이고, URL에 노출이 되기 때문에 보안이 필요한 데이터에 대해서는 적절하지 않다.

    🚨 Header 부분에 담길 경우 URL상에 ? 뒤에 데이터가 붙어 Request가 보내지기 때문에 민감한 정보를 보내기에 적절하지 않다.

    POST 방식은 HTTP Request Message의 Body부분에 데이터가 담겨서 전송된다. 때문에 데이터 크기가 GET방식보다 크고 보안적인 측면에서 GET방식에 비해 낫다. 하지만 암호화를 하지 않는 이상 거기서 거기다.

    기타 메서드

    • HEAD : GET과 동일하지만 메시지 부분을 제외하고 상태와 헤더만 반환
    • OPTIONS : 대상 리소스에 대한 통신 가능 옵션 설명
    • CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정
    • TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트 수행

    참고

    profile
    개발자를 꿈꾸는 대학생

    0개의 댓글