REST API 방식은 POST 기반 등록과 PUT 기반 등록이 존재
등록(Create) 시 POST로 등록할 때와 PUT으로 등록할 때의 차이가 있음 한번 살펴볼 것임
PUT : 전체 수정
PATCH : 부분 수정
PUT보단 PATCH 주로 씀 , 클라이언트가 수정할 내용만 Body에 JSON 형태로 적어서 전송하면 해당 부분만 수정되므로 , PUT은 내용 하나라도 빠지면 빠진 데이터 전부 사라지니
PUT은 게시글 수정 시에 주로 쓰임 , 게시판 글 수정버튼 누르면 전체 글이 수정되어야 하므로
클라이언트가 /members POST로 등록 요청 => 서버는 회원 등록 후 신규 등록된 리소스를 식별할 수 있는 최종 URI를 만듬(/members/{id}) => 서버는 클라이언트에게 /members/{id} 응답
즉 클라이언트 입장에서 정확한 리소스는 서버에 저장된 후에 알 수 있음
컬렉션에서 리소스 관리
즉 서버에서 리소스를 생성하고 관리하므로 등록 시점(/members POST 요청)에 클라이언트는 리소스를 식별할 수 없음
따라서 클라이언트는 서버에 등록된 후에 조회 , 수정 , 삭제와 같은 작업 가능
POST 기반 등록 : 서버가 리소스를 식별하므로 서버 리소스 관리 저장소인 컬렉션에서 리소스를 관리
PUT 기반 등록 : 클라이언트가 리소스를 식별하므로 클라이언트 리소스 관리 저장소인 스토어에서 관리
회원 목록 : /members GET
회원 등록 폼 조회 : /members/new GET
회원 등록 : /members/new POST
회원 조회 : /members/{id} GET
회원 수정 폼 조회 : /members/{id}/edit GET
회원 수정 : /members/{id}/edit POST
회원 삭제 : /members/{id} POST
HTML Form 방식은 GET , POST 만 지원하므로 컨트롤 URI 를 써야함
컨트롤 URI는 동사로 된 리소스로 HTTP 메서드로 해결하기 어려우면 씀
최대한 리소스 개념으로 설계하고 정 안 되면 컨트롤 URI 쓰자
HTTP API 방식에서도 가능 , PUT DELETE PATCH 써도 리소스 명명하기 어려울 수 있으므로