결국 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)