전송 방식
- 쿼리 파라미터를 통한 데이터 전송
- GET
- 주로 정렬 필터(검색어)
- 메시지 바디를 통한 데이터 전송
- POST, PUT, PATCH
- 회원 가입, 상품 주문, 리소스 등록, 리소스 변경
전송 상황
- 정적 데이터 조회
- 이미지, 정적 텍스트 문서
- 동적 데이터 조회
- 주로 검색, 게시판 목록에서 정렬 필터(검색어)
- HTML Form을 통한 데이터 전송
- 회원 가입, 상품 주문, 데이터 변경
- HTTP API를 통한 데이터 전송
- 회원 가입, 상품 주문, 데이터 변경
- 서버 to 서버, 앱 클라이언트, 웹 클라이언트(Ajax)
이미지, 정적 텍스트 문서
조회는 GET 사용
정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능
주로 검색, 게시판 목록에서 정렬 필터(검색어)
조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용
조회는 GET 사용
GET은 쿼리 파라미터 사용해서 데이터를 전달
POST 기반 등록 ( 예: 회원 관리 API 제공 )
특징 ( 신규 자원 등록 )
PUT 기반 등록
특징 ( 신규 자원 등록 )
클라이언트가 리소스 URI를 알고 있어야 한다.
클라이언트가 직접 리소스의 URI를 지정한다.
스토어(Store)
HTML FORM은 GET, POST만 지원
AJAX 같은 기술을 사용해서 해결 가능 ( 지금 내용은 순수 HTML FORM 이야기 )
GET, POST만 지원하므로 제약이 있음
- 컨트롤 URI
GET, POST만 지원하므로 제약이 있음
이런 제약을 해결하기 위해 동사로 된 리소스 경로 사용
POST의 /new, /edit, /delete가 컨트롤 URI
HTTP 메서드로 해결하기 애매한 경우 사용(HTTP API 포함)
- 정리
- HTTP API - 컬렉션
- POST 기반 등록
- 서버가 리소스 URI 결정
- HTTP API - 스토어
- PUT 기반 등록
- 클라이언트가 리소스 URI 결정
- HTML FORM 사용
- 순수 HTML + HTML form 사용
- GET, POST만 지원
- URI 설계 개념 정리
- 문서 ( Document )
- 단일 개념( 파일 하나, 객체 인스턴스, 데이터 베이스 ROW )
- 예 : /members/100, files/star.jsp
- 컬렉션 ( Collection )
- 서버가 관리하는 리소스 디렉터리
- 서버가 리소스의 URI를 생성하고 관리
- 예 : /member ( POST로 보냈을 때 서버가 생성하고 관리하는 부분)
- 스토어 ( Store )
- 클라이언트가 관리하는 자원 저장소
- 클라이언트가 리소스의 URI를 알고 관리 ( 클라이언트가 PUT의 위치를 알고 요청 )
- 예 : /files
- 컨트롤러 ( Controller ), 컨트롤 URI
- 문서, 컬렉션, 스토어로 해결하기 어려운 추가 프로세스 실행
- 동사를 직접 사용
- 예 : /members/{id}/delete