Chapter5. HTTP Method 활용

Date:     Updated:

카테고리:

태그:

인프런에 있는 김영한님의 모든 개발자를 위한 HTTP웹 기본 지식 강의를 듣고 정리한 내용입니다.
중간에 등장하는 ppt 내용들은 모두 강의자료를 캡처한 것입니다.


✈️ 클라이언트에서 서버로 데이터 전송

  • 정적 데이터 조회
  • 동적 데이터 조회
  • HTML Form을 통한 데이터 전송
  • HTML API를 통한 데이터 전송


정적 데이터 조회

ch5 1

  • 조회: GET ➡️ 메시지 헤더를 통해 데이터 전송
  • 이미지, 텍스트 등 정적인 데이터
  • 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로만으로 단순하게 조회 가능


동적 데이터 조회

ch5 2

  • 조회: GET ➡️ 메시지 헤더를 통해 데이터 전송
  • 주로 조회 조건을 걸어주는 필터, 조회 결과를 정렬하는 정렬 조건에 사용
  • 쿼리 파라미터를 통해 데이터 전달


HTML From 데이터 전송

  • HTML from 태크를 이용해 입력데이터를 간편하게 전송 (ex. form submit시 POST 요청)
  • GET, POST 지원


GET

ch5 3

  • get으로 요청시 데이터를 헤더에 있는 쿼리 파라미터로 바꾸고 HTTP 메시지 만들어줌 (알아서 해줌)
  • 주의) 리소스 변경이 발생하는 곳에 요청하면 안됨


POST

일반적인 요청

ch5 4

  • form의 내용을 key=value(쿼리 파라미터 형식)형태로 메시지 바디를 통해 전송
  • 전송 데이터를 url encoding 처리 ➡️ 어떤 방식으로 인코딩 했는지 헤더에서 알려줘야 함
  • Content-Type: application/x-www-form-urlencoded 사용


바이너리 데이터 전송

ch5 5

  • 파일 업로드 같은 바이너리 데이터 전송시 사용
  • image + text 같이 형식이 다른 여러개의 파일 전송 가능 (그래서 이름이 multipart)
  • Content-Type: multipart/form-data


HTTP API 데이터 전송

요즘 html만 가지고 만드는 경우는 잘 없으니…

  • 백엔드 시스템 통신 (서버 to 서버)
  • 앱 클라이언트, 웹 클라이언트 등등
  • GET, POST, PUT, PATCH, DELETE 전부 사용 가능
  • Content-Type: application/json을 주로 사용(사실상 표준. 예전에는 XML이 많았다고 함)


POST vs PUT (Collection & Store)

보통 회원 한 명이 가지고 있는 정보는 엄청나게 많다. PUT으로 회원 정보를 수정하려 하면 하나도 빠지지 않고 모든 정보를 보내줘야 한다. 그래서 정보 수정에는 PUT을 잘 쓰지 않는다(게시글 수정 같이 PUT이 좋은 경우도 있다). 그럼 PUT은 언제 유용하게 쓰일까? POST와 PUT의 차이점을 알면 PUT의 장점또한 잘 알 수 있다.

  • POST ➡️ 신규 리소스 식별자(/members/{id})는 서버가 만듬 (클라이언트는 뭔지 모름) ➡️ Collection
  • PUT ➡️ 클라이언트가 리소스 URI를 직접 지정 ➡️ Store

Collection이란 서버가 관리하는 리소스 디렉토리를 말한다. 서버가 리소스의 URI를 생성하고 관리한다.
Store란 클라이언트가 관리하는 자원 저장소이다. 클라이언트가 직접 리소스의 URI를 알고 관리한다.

따라서 파일 등록과 같이 클라이언트가 직접 리소스의 위치를 지정하고 싶은 경우 가 바로 PUT이 필요한 경우이다.

ex. PUT/files/2021/{filename}


Conrol URI

앞서 좋은 URI란 ‘리소스와 행위를 구분하고, 리소스만을 구분하고 식별하는 URI’ 라고 했다. 하지만 현실에서는 HTTP Method만으로 행위를 표현하기란 쉽지 않다. 특히 GET, POST만을 지원하는 html form 형식은 더욱 더 힘들다. 예를 들어 “내가 주문한 음식이 배달을 시작했다.” 라는 정보는 어떤 URI에 저장해야 할까? 이런 경우 행위이지만 어쩔 수 없이 start_delivery 라는 URI를 만들어야 하는데 이런 URI를 Control URI 라 한다.

ex) POST/orders/{orderId}/start_delivery



맨 위로 이동하기

Network 카테고리 내 다른 글 보러가기

댓글 남기기