인터넷 네트워크 - HTTP 메서드

d·2023년 4월 16일
0
post-thumbnail

HTTP 메서드

HTTP 메서드는 클라이언트가 서버에게 무언가를 요청할 때 서버에게 기대하는 행동이다. 메서드는 URI를 설계 할 때 리소스행위 를 구분 할 수 있게 해준다.

  • GET : 리소스 조회
  • POST : 클라이언트가 요청한 데이터를 서버가 처리한다. 주로 등록에 사용한다.
  • PUT : 리소스를 클라이언트가 서버에게 보내는 리소스로 대체하거나, 해당 리소스가 없으면 새로 생성한다.
  • PATCH : 리소스를 부분적으로 변경한다.
  • DELETE : 리소스를 삭제 한다.
  • HEAD : GET과 비슷하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환한다.
  • OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명한다.
  • CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정한다.
  • TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행한다.

GET

  • 서버에 전달하고 싶은 데이터를 query(쿼리 파라미터, 쿼리 스트링)를 통해 전달한다.
  • 메시지 바디를 이용해서 데이터를 전달할 수 있지만 지원하지 않는 곳이 많다. 권장하지 않는다.

1. 클라이언트가 원하는 데이터를 식별자를 포함한 메시지를 전달하여 서버에게 요청한다. 2. 서버에 메시지가 도착, 메시지를 확인한다. 3. 서버가 요청받은 데이터를 내부 데이터베이스에서 조회해 응답 결과가 포함된 메시지 생성 후 클라이언트에게 전달한다.


POST

  • 메시지 바디를 통해 서버로 요청 데이터를 전달하고, 서버는 요청 데이터를 처리한다.
  • 주로 전달된 데이터로 신규 리소스를 등록하거나, 변경된 프로세스를 처리하는데에 사용된다.
  • 클라이언트는 등록될 리소스의 URI를 모른다.
  • 다른 메서드로 처리하기 애매한 경우에도 사용된다. (예- JSON으로 조회 데이터를 넘겨야 하는데, GET 메서드를 사용하기 어려운 경우 쿼리 파라미터를 쓰지 않거나 지원하는 서버가 없을 경우, 조회지만 POST로 조회용 데이터를 전달해서 처리하도록 사용될 수 있다.)

    1. 클라이언트가 요청 데이터(/members)를 POST로 전송한다. 2. 서버에서 데이터를 전송받아 확인 후, 내부 로직을 통해 응답할 데이터를 생성한다. 3. 메서드 처리에 대한 응답 데이터를 클라이언트에게 보낸다.


PUT

  • 리소스가 있으면 완전히 대체한다.
  • 리소스가 없으면 새로 생성한다. POST와 다른 점은 클라이언트가 리소스 위치를 알고 URI를 직접 지정한다는 것이다.(POST는 클라이언트가 리소스의 위치를 몰라 서버가 모두 전담한다.)

PATCH

  • 리소스의 일부 데이터를 부분적으로 변경하고 싶을 때 사용한다.
  • 리소스의 위치를 직접 지정한다.
  • PATCH를 지원하지 않는 서버인 경우에는 POST를 사용 하면 된다.


DELETE

  • 리소스를 직접 제거하고 싶을 때 사용한다. 리소스의 위치를 직접 지정한다.


HTTP 메서드 활용

정적 데이터 조회

  • 주로 이미지, 정적 텍스트 문서 조회에 사용된다.
  • GET 사용
  • 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회가 가능하다.

동적 데이터 조회

  • 클라이언트가 쿼리 파라미터를 기반으로 데이터를 전달해서 동적 데이터 결과를 조회 해야 할 때 사용한다.
  • 주로 검색, 게시판 목록에서 정렬 필터에 사용된다.
  • 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용한다.
  • 쿼리 파라미터를 사용해서 GET을 통해 데이터를 전달해준다.

HTML Form을 통한 데이터 전송

  • html form 태그를 제출하면 웹 브라우저가 form 태그의 데이터를 읽어서 HTTP 메시지를 생성해준다.

  • 주로 회원가입, 상품 주문, 데이터 변경에 사용된다.
  • Content-Type : 쿼리 파라미터와 유사한 key-value 형식으로 데이터를 생성해 HTTP 바디에 포함시켜준다. 서버에 데이터가 전송되면 Content-Type을 parsing해 데이터를 저장한다.
  • GET 메서드 사용 - 웹 브라우저가 GET 메서드로 변경해서 메시지 바디를 사용하지 않고 쿼리 파라미터에 바로 포함시킨다. 리소스 변경이 발생하는 곳에 사용하거나 저장하는 곳에 사용하지 않도록 주의해야 한다.

  • Binary 데이터를 포함해서 전송 시, multipart/form-data 를 사용한다 - 웹 브라우저가 Content-Type에 boundary를 자동으로 추가하는데, boundary로 content-type을 구분해서 여러 형식의 form 데이터를 전송하는 원리를 통해 파일을 전송한다.


REFERENCE: 모든 개발자를 위한 HTTP 웹 기본 지식


0개의 댓글