Skip to content

Latest commit

 

History

History
126 lines (93 loc) · 4.9 KB

5. HTTP 메소드 활용.md

File metadata and controls

126 lines (93 loc) · 4.9 KB

5. HTTP 메소드 활용

5.1 클라이언트 → 서버

1. 데이터 전송 방식

  1. 쿼리 파라미터
    • GET, POST 가능
  2. HTTP 메시지 바디
    • POST, PUT, PATCH

2. 대표적인 요청 상황 - 조회 & 전송

  1. 리소스 조회 - GET
    1. 정적 데이터
      • 쿼리 파라미터 사용 x
      • 단순히 URL 경로로 단순하게 조회 가능
      • ex) 이미지, 정적 텍스트 문서
    2. 동적 데이터
      • 쿼리 파라미터 사용 o
      • 필터, 정렬 시 조건에 주로 사용
  2. 데이터 전송
    1. 쿼리 파라미터 - GET (== 동적 데이터 조회)

      • 리소르를 조회하기 위해 검색어, 정렬 조건 등의 데이터를 전송할 때
    2. HTML Form - POST,(GET-조회)

      • 메세지 바디에 데이터를 넣어서 전송

        • 메세지 바디에 쿼리 파라미터 형식의 데이터가 들어감
          • 서버에서 GET의 쿼리 파라미터와 같은 방식으로 데이터를 조회할 수 있음
      • Content-Type

        1. application/x-www-form-urlencoded

          • default

          • 전송 데이터를 url encoding 처리함

            ex) abc김 → abc%EA%B9%80

          Untitled 0

        2. multipart/form-data

          • 데이터 업로드 시 사용
            • 바이너리 데이터 전송
          • 다른 종류의 여러 파일을 전송할 때 사용 Untitled 1
      • HTML Form으로 GET도 사용 가능

        • 하지만 GET은 리소스 변경이 발생하는 곳에서 사용하면 안되기 때문에 조회용으로만 사용

          ex)

          → 조회용으로 사용

    3. HTTP API

      • Form을 사용하지 않는 모든 상황에서의 데이터 전송
        • 직접 HTTP 메시지를 만들어서 전송
        • 서버 to 서버, 앱/웹 클라이언트
      • get → 조회
      • post, put, patch → 메시지 바디를 통해 데이터 전송
        • JSON, TEXT, XML 등
      • Content-Type
        • application/json (표준)
          • 과거에는 XML을 주로 사용했으나 지금은 JSON을 사용함
        • text/plain, application/xml 등

5.2 HTTP API & HTML Form 설계

1. HTTP API

  1. Collection - ex) 회원 관리 시스템 Untitled 2

    • Collection : 서버가 관리하는 리소스 디렉토리 (= /members)
    • POST 기반 등록
      • 서버가 새로 생성된 리소스의 URI를 생성해 줌

        → PUT 기반 등록과의 차이점

        • 클라이언트는 등록될 리소스의 URI를 몰라도 됨
        • 파일 등록 시 : POST /members
  2. Store - ex) 파일 관리 시스템 Untitled 3

    • Store : 클라이언트가 관리하는 리소스 디렉토리 (= /files)
    • PUT 기반 등록
      • 클라이언트가 직접 리소스 URI 지정해야 함

        → POST 등록과의 차이점

        • 파일 등록 시 : PUT /files/star.jpg

대부분의 경우 Collection을 사용함

2. HTML Form

Untitled 4

  • GET, POST만 가능

    • 데이터 수정, 삭제 등 메소드 사용에 제약이 있음
    • 컨트롤 URI로 해결
  • 컨트롤 URI (= 컨트롤)

    동사로 된 리소스 경로

    • GET, POST만 사용할 수 있는 HTML Form의 제약을 해결하기 위해 사용
    • HTML Form뿐만 아니라 HTTP API에서도 HTTP 메소드만으로 동작을 나타낼 수 없는 경우 많이 사용함
      • ex) /update, /process

3. URI 설계 개념

  1. 문서 (Document)

    • 단일 개념

      • 파일 1개, 객체 인스턴스, 데이터베이스 row

      ex) /members/100, /files/star.jpg

  2. 컬렉션 (Collection)

    • 서버가 관리하는 리소스 디렉터리

      ex) /members

  3. 스토어 (Store)

    • 클라이언트가 관리하는 리소스 디렉터리

      ex) /files

  4. 컨트롤러 (Controller)

    • 위 3개로 해결하기 어려운 추가 프로세스 수행

    • 동사를 직접 사용

      ex) /members/{id}/delete