결국 http메서드를 사용해서 클라이언트 - 서버가 통신하는 것은 데이터를 주고받기 위함이다. 데이터를 주고 받는 내용은 크게 4가지로 정리되고, 각 상황에 따라 전달되는 http 메서드 및 내용이 달라진다.
get
을 통해 이미지 파일/정적인 텍스트 문서 등을 조회 get
이나 query parameter를 통해 검색 or 게시판에서 정렬 필터post
,put
,patch
등을 통해 회원가입, 상품 주문 등 처리post
) submit을 누르면 > http 메세지가 서버로 전송됨application/x-www.form-urlencoded
(세부 데이터는 query parameter 형식, e.g. username=kim&age=20
)multipart/form-data;boundary=—-XXX
이고 메세지 바디에 각 데이터가 ——XXX
로 구분됨 (multipart라고 쓰여져 있는 것 자체가 html form 데이터와 다른 종류의 파일이 같이 존재한다는 뜻) content-type:application/json
을 주로 사용 collection (대부분 사용되는 타입)
: 서버가 관리하는 리소스 디렉토리 (uri 생성 및 관리), server-managed directory
: 때문에 클라이언트는 리소스가 어떤 디렉토리로 등록될지 모름
: 대표적인 예가 회원 관리 시스템
http 메세지: POST/members --> 서버는 Location: /members/100 로 응답
: post
기반, directory는 복수형(plural)으로 작성하는 것이 원칙 (e.g. /members)
(post
메서드는 리소스 uri를 지정하지 않기 때문에 당연한 흐름)
store
: 클라이언트가 관리하는 리소스 디렉토리, client-managed directory
: 때문에 클라이언트는 처음부터 리소스의 uri를 알고 있고 http 메세지를 보낼 때 uri를 지정해서 보냄
: 대표적인 예는 원격 파일 관리 시스템
http 메세지: PUT/files/star.jpg 를 서버로 전송
: put
기반, directory는 마찬가지로 복수형으로 작성함 (e.g. /files)
(put
메서드는 리소스 uri를 처음부터 지정하며 이것이 post
와 가장 큰 차이점)
html form
: html form은 get
,post
만 지원하다보니, 자연스럽게 post
메서드 사용 시 컨트롤 uri가 추가로 사용됨
: 그래야 등록/수정/삭제 등의 구체적인 프로세스를 실행할 수 있음
example 1) /members/new, 회원등록 폼 열기(GET), 회원 등록 (POST)
example 2) /members/{id}/edit, 수정폼 열기(GET), 수정하기 (POST)
example 3) /members/{id}/delete, 삭제(POST)