본문 바로가기
  • 시 쓰는 개발자
CS 개념/네트워크

HTTP 웹 기본 지식 (5) - HTTP 메소드 활용

by poetDeveloper 2024. 5. 13.

김영한님의 HTTP 웹 기본지식을 들으며 정리하였습니다.

 

클라이언트 → 서버 데이터 전송 방법 2가지

이 방법은 크게 2가지로 나뉜다.

  1. 쿼리 파라미터를 통해 데이터 전송
    •    GET에서 사용
    •    주로 검색할 때 사용
  2. 메세지 바디를 통해 데이터 전송
    •    POST, PUT, PATCH
    •    회원가입, 주문, 등록, 리소스 변경 등 다양함

클라이언트 → 서버 데이터 전송 상황 4가지

  • 1. 정적 데이터 조회 (이미지, 텍스트)
    • 쿼리 파라미터 사용 안함.
    • GET으로 리소스 경로 같이 넘겨주기
  • 2. 동적 데이터 조회 (검색이나 정렬필터 등)
    • GET써서 쿼리 파라미터로 데이터 넘겨주기
  • 3. HTML Form을 통한 데이터 전송 (회원가입, 주문, 데이터 변경 등)
    • <form> </form> 이런 태그 형태로 보내는 것.
    • GET, POST만 지원함. DELETE, PUT 지원 안함. 물론 GET은 조회만 가능하고 URL에 쿼리로 넣어서 보내줌. POST는 메세지 바디에 데이터 넣어서 보내줌
    • Content-Type : multipart/form-data  파일 전송같은 바이너리 데이터 전송시 사용.
  • 4. HTTP API를 통한 데이터 전송 (html form 쓰지 않는 상황)
    • 서버 to 서버같이 백엔드 통신에서 주로 사용함. 서버끼리 통신할 땐 HTML 이런 게 전혀 없으니까.
    • React, VueJS 같은 웹 클라이언트와 통신할 때 자주 사용하는 방식. (AJAX)
    • GET : 쿼리 파라미터로 데이터 전달
    • POST, PUT, PATCH : 메세지 바디 통해서 데이터 전송
    • Content-Type : application/json  사실상 json이 표준. XML은 거의 안쓰임.

HTTP API 설계 팁

  • PUT  vs  PATCH : PATCH를 쓰는 게 좋다. 회원 정보 수정같은 걸 생각해도, 정보가 엄청 많은데 그중에 하나라도 빠뜨리게 되면 덮어 씌워버리기 때문에 데이터가 날라가버린다. 그런데 게시글 수정같은 건 수정된 내용을 다시 보내기 때문에 PUT으로 해도 무방하다. 이도 저도 아니다 싶으면 POST 써도 된다.
  • 파일 업로드할 땐 PUT : 기존 파일이 있다면 최신 버전으로 대체해야하고, 없다면 클라이언트가 보내는 파일을 저장하면 되니까 PUT 맥락이 딱 들어맞음. 물론 그럼에도 POST를 쓰는 경우가 많은듯 (?)
  • Store : 클라이언트가 관리하는 리소스 저장소는 "Store"라고 한다. 파일을 PUT으로 보낼 때, 클라이언트는 리소스의 URI를 알고 보낸다.(star.jpg가 어느 경로에 있는지 알고 보냄) 이렇게 클라이언트가 리소스(파일 이미지 등) 저장소를 관리하고, 리소스의 URI를 알고 관리하는 방식을 "스토어" 방식이라고 한다.