HTTP 란?

woogi·2024년 1월 12일
0

HTTP란?

Hypertext Transfer Protocol의 약자로 브라우저와 서버 간의 데이터 통신을 위한 프로토콜이다.
HTTP는 무상태성(Stateless) 프로토콜이다, 이는 서버가 클라이언트의 상태나 데이터를 유지하지 않음을 의미한다.(상태를 유지하기 위한 노력으로 Cookie와 Session을 사용함)
클라이언트와 서버간 연결을 유지하지 않기 때문에 요청(Request)/응답(Response) 방식으로 동작 한다.
OSI 7 계층에서 응용 계층에 있는 프로토콜이며 주로 TCP/IP 프로토콜을 기반으로 한다.
일반적으로 80 포트를 사용한다.

HTTP의 동작 방식


클라이언트는 브라우저를 통해서 서버에 요청하면 서버에서 요청 사항에 맞는 결과를 사용자에게 응답해준다.

Request 구조

  • 요청 메소드(GET, POST, PUT, DELETE..)
  • 요청 URL 경로
  • 프로토콜의 버전(HTTP/1.1, HTTP/2)
  • 부가적인 정보를 전달하기 위한 Header

Response 구조

  • 프로토콜의 버전
  • 요청의 상태 코드(20X,30X,40X,50X..)와 상태 메시지
  • Header들

HTTP Method가 뭘까?

서버가 수행해야 할 동작을 지정하는 것이다.
예를들어, 클라이언트가 GET,POST등의 메소드로 서버에 요청을 하면 서버는 해당 메소드에 대한 동작을 하는 방식이다.

  • GET
    리소스를 조회하는 메소드이다.
    서버에 데이터를 전달할 때 쿼리스트링을 사용한다.(호출 url ?뒤에 전달하려는 파라미터 값을 설정)
    ex) GET /user/10?user_name=woogi&user_code=01

  • POST
    데이터를 추가하거나 등록 할 때 주로 사용하는 메소드이다.(조회 할때도 사용하긴 한다.)
    서버에 데이터를 전달할 때 메시지 body 부분에 json 형태로 전달한다.
    ex)
    POST /user/10
    {
    "user_name": "woogi",
    "user_code": "01"
    }

  • PUT
    리소스를 대체(수정)하는 메소드이다.
    요청 메시지에 데이터가 있으면 덮어쓰고, 없으면 새로 생성한다.
    ex)
    PUT /user/10
    {
    "user_name": "woogi",
    "user_code": "02"
    }

    /user/10로 호출 시 유저가 있으면 보내는 메시지 값으로 데이터를 변경하고 없으면 새로 생성한다.(있을 경우 덮어쓰기의 개념이기 때문에 기존 데이터가 없어지고 보내는 값으로 대체 된다고 봐야겠다)

  • PATCH
    리소스의 일부 부분만 수정하는 메소드이다.

  • DELETE
    특정 리소스를 삭제하는 메소드이다.

  • HEAD
    GET 메소드의 요청과 동일 하지만 응답 body를 리턴하지 않는다. (상태코드 리턴에 대한 검사용도로 사용)

HTTP 응답 코드

HTTP 응답 상태 코드는 HTTP 요청이 성공적으로 완료되었는지 알려준다.
상태 코드는 3자리 코드로 되어있으며, 각 코드의 첫번째 숫자(1-5로구성)는 각각의 의미가 있다.

1xx(정보) : 요청이 수신되어 처리 중
2xx(성공) : 요청이 정상적으로 처리 되었음
3xx(리다이렉션) : 리다이렉션을 의미, 요청 완료를 위해 추가 작업 조치가 필요
4xx(클라이언트 오류) : 클라이언트 오류를 의미, 요청의 문법이 잘못되었거나 요청을 처리할 수 없음
5xx(서버 오류) : 서버 오류를 의미

4xx, 5xx 코드는 정상적인 상황의 응답 코드가 아니기 때문에 확인 및 관리가 필요한 코드이다.

각 응답 상태 코드들은 아래의 URL에서 확인이 가능하다.

https://developer.mozilla.org/ko/docs/Web/HTTP/Status

참고

HTTP 메서드 종류 & 요청 흐름 💯 총정리
https://developer.mozilla.org/ko/docs/Web/HTTP

0개의 댓글

관련 채용 정보