회원 관리 시스템
클라이언트는 등록될 리소스의 URI를 모른다
요청 메시지를 받은 서버가 새로 등록된 리소스의 URI를 생성해준다
컬렉션 (Collection)
POST는 클라이언트가 서버에게 이 리소스를 등록해달라고 요청한다. 그러면 서버는 해당 리소스의 URI를 만들어서 돌려준다
파일 관리 시스템
등록을 위해 POST대신 PUT을 사용하고 있다. 어떤 차이점이 있을까?
클라이언트가 리소스 URI를 알고 있어야 한다
클라이언트가 직접 리소서의 URI를 지정한다
스토어(store)
PUT은 클라이언트가 관리하는 리소스의 URI를 지정해서 서버에게 등록해달라고 요청한다. 그러면 서버는 해당 리소스를 전달 받은 URI에 등록해준다
참고
대부분 POST기반의 Collection의 관리 시스템을 사용한다
구성
-> PUT, PATCH, DELETE를 대체해야한다
회원 목록 /members -> GET
회원 등록 폼 /members/new -> GET
회원 등록 /members/new, /members -> POST
회원 조회 /members/{id} -> GET
회원 수정 폼 /members/{id}/edit -> GET
회원 수정 /members/{id}/edit, /members/{id} -> POST
회원 삭제 /members/{id}/delete -> POST
회원 등록 폼 & 등록
웹에서 회원 등록 버튼을 누르면 회원 등록 폼
의 /members/new
링크로 들어가진다 -> 그러면 HTML FORM이 나타나고 거기에 정보를 입력한다 -> <form>
태그를 데이터를 입력을 하고 저장(submit 버튼을 누르면)을 하면 -> POST로 넘어가게 되는데 이때 /members/new
또는 /members
중 선택해서 하면 된다
회원 조회 & 수정 폼 & 수정
회원 목록에서 회원 링크를 하나 누르면 해당 회원의 상세 화면으로 들어가진다 이때 /members/{id}
를 통해 들어가게 되는 것이다 -> 들어가서 수정 버튼을 누르면 회원 수정 폼으로 이동하게 된다. 이때는 변경이 일어나는 것이 아니라 edit
으로 가는 것으로 GET을 사용한다 -> 나타난 edit FORM에서 데이터를 변경하고 저장(submit)을 하게 되면 -> 해당 HTML FORM데이터를 서버에 전송해야 하는데 이때, members/{id}/edit
또는 /members/{id}
를 사용하게 된다
수정 버튼이 아니라 삭제 버튼을 누를 경우 -> /members/{id}/delete
를 POST해서 삭제하게 된다. DELETE메소드가 없으므로 컨트롤 URI를 사용해야만 한다
동사로 된 리소스 경로
를 사용한다정리
HTTP API - Collection
HTTP API - Store
HTML FORM 사용
/members/{id}/edit
문서(document)
컬렉션(Collection)
스토어(Store)
컨트롤러(Controller), 컨트롤 URI
원칙
기본적으로 리소스가 아닌 메서드로 접근해야 한다. 미네랄을 캐라
가 있다면 캐라
는 리소스가 아니므로 버리고, 타켓을 미네랄로 잡는다. 미네랄(자원)만을 가지고 리소스를 설계한다
즉, 자원인 회원, 주문이 있다면
회원(/members), 주문(/orders)을 갖추고 계층 구조로 회원의 번호(/members/{id}), 주문의 번호(/orders/{no}) 등을 구성한다. 이렇게 설계를 하고나서 GET, POST 등의 메소드로 해결이 안되는 상황일 때, 컨트롤 URI를 사용하게 된다