
강좌 & 팁
Ruby가 핫한 트렌드로 자리 잡을 때 같이 급 부상했던 web framework이 있습니다. 많이 들어보셨을 것이라고 생각되는 Ruby on Rails입니다. 제가 직접 써보지는 않았지만, 이슈트래커로 유명한 redmine이라든가, github을 표방하는 gitlab도 이 rails를 기반으로 작성된 웹 어플리케이션입니다.
재밌게도 node 진영에서도 web framework을 하나 탄생했습니다. 네이밍 센스가 훌륭하다고 생각되는 sails입니다. 기차를 타고 떠나는 ruby와 배를 타고 떠나는 node가 되는 셈이군요.
오늘은 이 sails를 간단하게 리뷰해보고 정말 쉽게 RESTful API 서비를 command line 몇줄로 완성시켜 보겠습니다.
node가 깔려있는 환경이라고 가정하고 설명하겠습니다.
다음 명령을 통해서 sails를 설치하겠습니다.
1 | # npm install -g sails |
간단하게 설치가 끝납니다. 다들 아시겠지만 -g는 global로 설치를 하는 옵션입니다.
작업할 폴더로 이동후에 다음 명령으로 sails seed를 만들어봅시다.
1 2 | root@59be8027f662: /app # sails new info: Created a new Sails app `app`! |
lift 명령을 통해서 sails를 띄워봅시다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | root@59be8027f662: /app # sails lift info: Starting app... info: info: info: Sails <| info: v0.10.5 |\ info: /|.\ info: / || \ info: , ' |' \ info: .- '.-==|/_--' info: `-- '-------' info: __---___--___---___--___---___--___ info: ____---___--___---___--___---___--___-__ info: info: Server lifted in ` /app ` info: To see your app, visit http: //localhost :1337 info: To shut down Sails, press <CTRL> + C at any time . debug: -------------------------------------------------------- debug: :: Fri Nov 07 2014 15:30:25 GMT+0900 (KST) debug: Environment : development debug: Port : 1337 debug: -------------------------------------------------------- |
배타고 떠나는 모양이 웃기네요. 웹브라우저를 열어서 접속할 주소를 알아서 맞추셔서 url을 입력하시면 다음과 같이 sails가 반겨줍니다.
sails를 ctrl-c로 잠시 멈추고 다음 명령으로 user라는 모델을 RESTful로 사용할 수 있도록 해보겠습니다.
1 2 | root@59be8027f662: /app # sails generate api user info: Created a new api! |
믿기지 않겠지만 이제 user라는 object를 RESTful로 사용할 수 있게 되었습니다.
lift로 다시 sails를 띄워놓은 상태에서 curl을 사용해서 확인해보도록 하겠습니다.
우선 가져오기를 해봅시다.
1 2 | [] |
입력한 user가 없으니 당연하게도 []로 빈 배열이 나옵니다.
이제 추가해보도록 하겠습니다.
1 2 3 4 5 6 7 8 | { "first_name" : "John" , "last_name" : "Doe" , "createdAt" : "2014-11-07T06:43:32.337Z" , "updatedAt" : "2014-11-07T06:43:32.338Z" , "id" : 5 } |
저는 이런 저런 테스트를 하느라 id가 5까지 올라갔네요. 아마 처음하시면 id가 1로 나올것입니다.
다른 테스트를 위해서 한명 더 추가해봅시다.
1 2 3 4 5 6 7 8 | { "first_name" : "Jane" , "last_name" : "Doe" , "createdAt" : "2014-11-07T06:44:38.373Z" , "updatedAt" : "2014-11-07T06:44:38.373Z" , "id" : 6 } |
id 5번에 John Doe, 6번에 Jane Doe가 추가되었습니다.
전체를 가져와봅시다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [ { "first_name" : "John" , "last_name" : "Doe" , "createdAt" : "2014-11-07T06:43:32.337Z" , "updatedAt" : "2014-11-07T06:43:32.338Z" , "id" : 5 }, { "first_name" : "Jane" , "last_name" : "Doe" , "createdAt" : "2014-11-07T06:44:38.373Z" , "updatedAt" : "2014-11-07T06:44:38.373Z" , "id" : 6 } ] |
훌륭합니다. 단 한줄로 이렇게까지 RESTful API 서비스를 구현할 수 있다니..
이제 id가 5번인 항목을 가져와보겠습니다.
1 2 3 4 5 6 7 8 | { "first_name" : "John" , "last_name" : "Doe" , "createdAt" : "2014-11-07T06:43:32.337Z" , "updatedAt" : "2014-11-07T06:43:32.338Z" , "id" : 5 } |
John의 성을 바꾸어 봅니다.
1 2 3 4 5 6 7 8 | { "first_name" : "Jhon" , "last_name" : "Smith" , "createdAt" : "2014-11-07T06:43:32.337Z" , "updatedAt" : "2014-11-07T06:47:02.869Z" , "id" : 5 } |
Jane을 삭제합니다.
1 2 3 4 5 6 7 8 | { "first_name" : "Jane" , "last_name" : "Doe" , "createdAt" : "2014-11-07T06:44:38.373Z" , "updatedAt" : "2014-11-07T06:44:38.373Z" , "id" : 6 } |
마지막으로 전체를 가져오면 다음과 같겠죠
1 2 3 4 5 6 7 8 9 10 | [ { "first_name" : "John" , "last_name" : "Smith" , "createdAt" : "2014-11-07T06:43:32.337Z" , "updatedAt" : "2014-11-07T06:47:02.869Z" , "id" : 5 } ] |
옛날에는 RESTful API 서비스도 만드는데 상당히 시간이 오래걸렸던 것 같은데, 너무나도 쉽게 만드니 한편으로는 허탈하네요.
여기까지 sails를 사용하여 아주아주아주 간단한 RESTful API 서비스를 만들어보았습니다.