HTTP 메서드 활용
클라이언트에서 서버로 데이터 전송
전달 방식
- 쿼리 파라미터를 통한 데이터 전송
- 메세지 바디를 통한 데이터 전송
- 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 - 컬렉션
- POST 기반 등록
- ex) 회원 관리 API
- 서버가 관리하는 리소스 디렉토리
- 서버가 알아서 새로 등록된 리소스 URI를 생성
- 클라이언트가 등록될 리소스의 URI를 모름
- ex) 위의 예시에서 /members
02. HTTP API - 스토어
- PUT 기반 등록
- ex) 파일 관리 API
- 클라이언트가 관리하는 리소스 저장소
- 클라이언트가 리소스의 URI를 알고 관리
- ex) 위의 예시에서 /files
- GET, POST만 지원 (AJAX로 해결 가능하긴 함)
- GET, POST만 지원하므로 제약이 발생
- 이를 컨트롤 URI (컨트롤러)로 해결
- 동사로 된 리소스 경로 (위의 예시의 파란색)
- HTTP 메소드로 해결하기 애매한 경우 사용 (HTTP API 포함)
- 최대한 리소스를 활용하여 URI를 설계하고, 컨트롤 URI는 대체제로 사용 (남발하면 안돼)
인프런 - 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 정리한 내용입니다.
김영한님 인프런 강의
댓글남기기