프론트엔드 공부를 하다가 프론트엔드 개발자도 백앤드 지식이 있어야 한다고 해서
이것저것 찾아보다 node 를 이용한 RESTful, CRUD 를 공부해서 여기다가 적어봅니다.
설명하기에 앞서 기본적인 node 지식이 있을 경우 이해가 가능합니다.
앞서 RESTful과 CRUD 를 용어와 이해를 돕기 위해 자세하게 설명하겠습니다.
representational state transfer(대표 상태 전송)
자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다.
클라이언트와 서버가 어떻게 서로 소통해야 하는가에 대한 가이드라인, 개념, 원리입니다.
REST가 개념, 가이드라인 표준, 원칙이라면
RESTful은 이 REST 규칙에 따르는 시스템이라고 할 수 있습니다.
HTTP URL(Uniform Resource Identifier)(통합 자원 식별자)를 통해 자원(Resource)을 명시
HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한
CRUD Operation을 적용하는 것을 의미합니다.
🧛 : "즉 위에서 말한 REST 의 구체적인 개념을 지키면 RESTful 한 시스템이라고 할수 있지?"
🧛♀️ : "맞아"
🧛 : "근데 HTTP URL를 통해 자원을 명시한다는건 무슨 소리야? CRUD Operation 은 뭐고?"
🧛♀️ : "그럼 차근차근 설명해줄게"
간단하게 이야기 하자면 HTTP URL 로 자원을 명시 한다는 것은
app.get('user/:id', (req,res) => {
console.log(req.params);
res.send('유저의 id 입니다.')
})
라는 코드가 있을때 'user/:id' 를 말합니다.
즉 user/:id 라는 코드를 통해 유저의 아이디를 얻기위한 것이라고 생각할 수 있습니다.
CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인
Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말입니다.
사용자 인터페이스가 갖추어야 할 기능(정보의 참조/검색/갱신)을 가리키는 용어로서도 사용됩니다.
REST에서의 CRUD Operation 동작 예시는 다음과 같습니다.
Create : 데이터 생성(POST)
Read : 데이터 조회(GET)
Update : 데이터 수정(PUT, PATCH)
Delete : 데이터 삭제(DELETE)
예시 코드
app.get('/user', (req,res) => {})
app.post('/user', (req,res) => {})
app.put('/user/:id', (req,res) => {})
app.patch('/user/:id', (req,res) => {})
app.delete('/user/:id', (req,res) => {})
앞서 말한 규칙 말고도 REST API를 제공하는 웹 서비스를 RESTful하다고 할 수 있는데
여기서 REST API 의 설계 기본 규칙에 대해서 알려드리겠습니다.
API
프로그램끼리 소통하기 위한 규약이나 도구 모음을 의미합니다.
API는 프로그램에서 제공되는 일종의 문서이며, 다른 프로그램들이 이 문서를 참고하여 필요한 기능을
사용할 수 있습니다. 이러한 문서는 어떤 데이터를 주고 받을지, 어떤 조작을 할 수 있는지,
어떤 결과를 얻을 수 있는지 등을 설명합니다.
API 를 손쉽게 이해하기 위해 제가 만들어봤습니다.ㅎㅎ..
🧛 : "내가 네이버 지도 앱에서 "주소 검색" 기능을 만들고 싶은데, 해당 기능을 직접 만드는게 좋겠지?"
🧛♀️ : "네이버 지도가 제공하는 API를 사용하여 손쉽게 주소 검색 기능을 추가할 수 있으니 그걸 사용해봐!!"
이제 REST API 의 규칙을 설명하겠습니다.
공부하면서 필요한 부분만 정리했으니 참고 부탁드립니다.
URL을 심플하고 직관적으로 만들자
REST API를 URL만 보고도, 직관적으로 이해할 수 있어야 합니다.
URL을 길게 만드는것 보다, 최대 2개 정도로 간단하게 만드는 것이 이해하기 편합니다.
/dogs
/dogs/poodle
URL 은 동사보다 명사를 쓰자
동사를 쓰는 경우는 CRUD 밖에 없을텐데 그럴때는 GET,POST,DELETE 등을 쓰자.
좋은 예시
GET /dogs
POST /cats
나쁜 예시
/getdogs
/deletecats
단수보다는 복수형 명상를 사용한다.
/dogs
/cats