라우터 분리하기에서 저는 회원에대한 routes(라우트) 와 handler(핸들러) 를 구현했고, 실제 DB와 연동하진 않았지만 엔드포인트에 따른 Call이 진행이 되도록 임시로 구현했습니다.
이제 실제로 구현하기에 앞서서 회원 정보 관리 요구사항을 정의해 보겠습니다.
API URI을 어떻게 설계해야할까?
회원을 등록한다.
회원을 수정한다.
위 처럼 리소스+행위가 리소스가 아니다.
오로지 회원(user)라는 리소스(자원)으로 식별하면 된다.
위에 잘못된 API URI 디자인 설계에서 create-user에 뜻을 해석하면, 생성한다-회원이라는 뜻이다.
생성한다라는 행위와 회원이라는 자원이 합쳐져있다.
리소스와 행위를 분리해야한다.
users라는 리소스를 식별하여,URI계층에 구조를 활용하였다.
첫 번째, URI는 정보의 자원을 표현해야한다.
⛔️ REST를 적용하지 못한 잘못된 URI
POST /users/insert/1
URI는 자원을 표현하는데 중점을 두어야한다.
두 번째, 자원에 행위는 HTTP Method(GET, POST,PUT, DELETE)로 표현된다.
위에 REST를 적용하지 못한 잘못된 URI를 다음과 같이 변경이 가능하다.
POST /users/1
| METHOD | 역할 |
|---|---|
| POST | POST를 통해 해당 URI를 요청하면 리소스를 생성합니다. |
| GET | GET를 통해 해당 리소스를 조회합니다. 리소스를 조회하고 해당 도큐먼트에 대한 자세한 정보를 가져온다. |
| PUT | PUT를 통해 해당 리소스를 수정합니다. |
| DELETE | DELETE를 통해 리소스를 삭제합니다. |