1. RESTful Routing / API?
:Representational State Transfer 의 약자
2. Why it matters?
: HTTP route와 CRUD를 매핑하는 역할을 한다. 즉 특정 URL과 HTTP method를 통해 서버로 Request가 들어오면 이를 해석하여 DB에 내용을 추가, 조회, 업데이트, 삭제하기 위함이다. 크게 4가지(CRUD)가 있으나, 편의를 위해 7가지의 카테고리가 구분하여 사용한다.
3. Sample of the RESTful API/Routing
하나의 blog/게시판/웹사이트를 만들었다고 가정할 때, 가장 기본적인 기능은 1) 게시물 생성 2) 게시물 조회 3) 게시물 수정 4) 게시물 삭제이다. 이 4가지 기능을 상세화 시킨 내용을 정리해보면 아래의 표와 같다.
Name | Path | HTML Verb | Purpose |
INDEX | /blogs | GET | List all blogs |
New | /blogs/new | GET | Show new blog form |
Create | /blogs | POST | Create a new blog, then redirect somewhere |
Show | /blogs/:id | GET | Show info about one specific blog |
Edit | /blogs/:id/edit | GET | Show edit form for one blog |
Update | /blogs/:id | PUT | Update a particular blog, then redirect somewhere |
Destroy | /blogs/:id | DELETE | Delete a particular blog, then redirect somewhere |
1) INDEX(/blogs) : /blog 에 접속했을 경우 블로그에 있는 모든 게시글을 화면에 보여주는 목적으로 사용
2) New(/blogs/new) : /blog/new 에 접속했을 경우 블로그에 게시글을 생성할 수 있는 form을 보여준다. <form action="/blogs", method="POST">내부 input 태그에 작성한 내용을 3)으로 전달하는 역할까지만 수행한다. (게시물의 제목, text, 이미지 url 등)
3) Create(/blogs): 3) /blog/new 에서 <form> 태그로 전달한 데이터를 POST 형식으로 전달받는 목적지이다. 게시물을 DB에 저장하고 특정 페이지로 이동시키는 목적으로 사용한다. "게시물이 정상적으로 등록되었습니다" 라는 페이지나 블로그 index 페이지로 이동하게 될 것이다.
4) Show(/blogs/:id) : 특정 페이지에 대한 상세내용을 보여줄 때 사용한다. 일반적으로 게시판에 게시물 제목, 작성자, 날짜 등만 보여준다면 DB에 저장된 id값을 조회하여 본문 내용을 보여준다.
5) Edit(/blogs/:id/edit) : id로 조회된 특정 페이지를 update 시키기 위한 form을 보여준다.
6) Update(/blogs/:id) : .3)과 비슷한 개념이지만 3번의 경우 id를 새로 생성하고, 목적에 따라 저장되는 위치(블로그일 경우 카테고리 등)가 달라지거나 입력을 해야하지만 Edit의 경우에는 해당 위치에 생성된 데이터를 단순히 수정하므로, 저장 위치와 id는 동일하다. url형태는 4)Show와 동일하지만 HTML method가 다르므로 전혀 다른 기능을 수행한다.
7) Destroy(/blogs/:id) : 특정한 게시물을 삭제한다. 특정한 하기 위해 id값을 사용하며, 최소한 동일한 collection에서는 유일함을 보장한다.
상기 표에 있는 7가지 기능은 결국 CRUD(Create, Read, Update, Destroy)의 돕거나(게시글 작성 페이지, 게시글 수정 페이지) 조회하는 목적을 위해 사용하므로 CRUD의 개념만 정확히 이해하면 된다.