HTTP 메서드 활용

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

전달 방식

  1. 쿼리 파라미터를 통한 데이터 전송
    • GET (정렬 필터, 검색)
  2. 메세지 바디를 통한 데이터 전송
    • POST, PUT, PATCH (회원 가입, 상품 주문, 리소스 등록, 리소스 변경)

4가지 상황에 따른 설명

  • 정적 데이터 조회
    • 이미지, 정적 텍스트 문서
    • 사용 메소드 : GET
    • 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능
  • 동적 데이터 조회
    • 검색, 게시판 목록에서 정렬 필터 (검색어)
    • 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용
    • 사용 메소드 : GET
    • 쿼리 파라미터 사용
  • HTML Form 데이터 전송 (GET, POST만 가능)
    • submit 시 GET 전송
      • 조회하는 경우에만 사용
      • 데이터 전달 시, 쿼리 파라미터 형식으로 넘어감 (메세지 바디 사용 X)
    • submit 시 POST 전송
      • Content-Type: application/x-www-form-urlencoded 사용
      • form의 내용을 메세지 바디를 통해 전송 (key=value, 쿼리 파라미터 형식)
      • 전송 데이터를 url encoding처리
      • 회원 가입, 상품 주문, 데이터 변경
    • POST + enctype: multipart/form-data 옵션
      • Content-Type: multipart/form-data; boundary=—XXX
      • 다른 종류의 여러 파일과 폼의 내용을 함께 전송 가능
        • —XXX를 기준으로 넘겨온 데이터 들을 분리해서 전송
      • 주로 binary 데이터 (ex-파일)을 전송할 때 사용
  • HTTP API 데이터 전송
    • Content-Type: application/json (사실상 표준)
    • 서버 to 서버, 앱 클라이언트, 웹 클라이언트 간의 통신에서 주로 사용
    • 웹 클라이언트
      • HTML Form 전송 대신 AJAX를 사용할 때
      • ex) React, VueJs 같은 웹 클라이언트와 API 통신
    • POST, PUT, PATCH : 메세지 바디를 통해 데이터 전송
    • GET : 조회, 쿼리 파라미터로 데이터 전달


HTTP API 설계 예시

01. HTTP API - 컬렉션

회원 관리 시스템 API

  • POST 기반 등록
  • ex) 회원 관리 API
  • 서버가 관리하는 리소스 디렉토리
  • 서버가 알아서 새로 등록된 리소스 URI를 생성
    • 클라이언트가 등록될 리소스의 URI를 모름
    • ex) 위의 예시에서 /members

02. HTTP API - 스토어

파일 관리 시스템 API

  • PUT 기반 등록
  • ex) 파일 관리 API
  • 클라이언트가 관리하는 리소스 저장소
    • 클라이언트가 리소스의 URI를 알고 관리
    • ex) 위의 예시에서 /files

03. HTML FORM 사용 (순수한 HTML인 경우)

HTML Form API

  • GET, POST만 지원 (AJAX로 해결 가능하긴 함)
  • GET, POST만 지원하므로 제약이 발생
  • 이를 컨트롤 URI (컨트롤러)로 해결
    • 동사로 된 리소스 경로 (위의 예시의 파란색)
    • HTTP 메소드로 해결하기 애매한 경우 사용 (HTTP API 포함)
    • 최대한 리소스를 활용하여 URI를 설계하고, 컨트롤 URI는 대체제로 사용 (남발하면 안돼)



인프런 - 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 정리한 내용입니다.


김영한님 인프런 강의

댓글남기기