06. REST API
웹 애플리케이션을 만드려면, 우리가 데이터베이스에 정보를 읽고, 쓰게 됩니다. 그런데, 브라우저 쪽에서 직접 데이터베이스에 접속을 해서 데이터를 변경한다면, 보안적으로 문제가 되겠지요? 그래서, 우리는 REST API 라는 것을 만들어서 사용합니다.
클라이언트가 서버에게 자신이 데이터 조회 / 생성 / 삭제 혹은 업데이트를 하겠다고 요청을 하면, 서버는 이 요청에 따라서 필요한 로직에 따라 데이터베이스에 접근하여 작업을 처리합니다.
REST API 에서는 요청의 종류에 따라 다른 HTTP 메소드를 사용합니다. HTTP 메소드는 여러 종류가 있는데, 그 중 주로 사용되는것들은 다음과 같습니다:
메소드 | 설명 |
---|---|
GET | 데이터를 조회 할 때 사용됩니다 |
POST | 데이터를 등록 할 때 사용됩니다. 인증작업을 거칠 때 사용되기도 합니다. |
DELETE | 데이터를 지울 때 사용 됩니다. |
PUT | 데이터를 새 정보로 통째로 교체 할 때 사용됩니다. |
PATCH | 데이터의 특정 필드를 수정 할 때 사용됩니다. |
라우터에서 각 메소드에 대한 요청을 처리하기 위해서는, 이 메소드 종류에 따라 .get, .post, .delete, .put, .patch 를 사용하면 됩니다. 우리가 이전에 작성한 라우트에서는, route.get 이라고 입력을 했었지요? 여기서 get 이 바로 HTTP 메소드 get 입니다. 만약에 우리가 POST 요청을 받고 싶다면 route.post(...) 을 하면 됩니다.
REST API 를 설계 할 때에는, API 의 주소와 메소드에 따라 어떠한 역할을 하는지 쉽게 파악 할 수 있게 작성해야 합니다. 블로그 포스트를 위한 REST API 를 예시로 알아보겠습니다.
- POST /posts 포스트 작성
- GET /posts 포스트 목록 조회
- GET /posts/:id 특정 포스트 조회
- DELETE /posts/:id 특정 포스트 삭제
- PATCH /posts/:id 특정 포스트 업데이트 (구현 방식에 따라 PUT 으로도 사용 될 수 있습니다)
- POST /posts/:id/comments 특정 포스트에 덧글 등록
- GET /posts/:id/comments 특정 포스트의 덧글 목록 조회
- DELETE /posts/:id/comments/:commentId 특정 포스트의 특정 덧글 삭제