강좌 & 팁
Ruby가 핫한 트렌드로 자리 잡을 때 같이 급 부상했던 web framework이 있습니다. 많이 들어보셨을 것이라고 생각되는 Ruby on Rails입니다. 제가 직접 써보지는 않았지만, 이슈트래커로 유명한 redmine이라든가, github을 표방하는 gitlab도 이 rails를 기반으로 작성된 웹 어플리케이션입니다.
재밌게도 node 진영에서도 web framework을 하나 탄생했습니다. 네이밍 센스가 훌륭하다고 생각되는 sails입니다. 기차를 타고 떠나는 ruby와 배를 타고 떠나는 node가 되는 셈이군요.
오늘은 이 sails를 간단하게 리뷰해보고 정말 쉽게 RESTful API 서비를 command line 몇줄로 완성시켜 보겠습니다.
node가 깔려있는 환경이라고 가정하고 설명하겠습니다.
다음 명령을 통해서 sails를 설치하겠습니다.
# npm install -g sails
간단하게 설치가 끝납니다. 다들 아시겠지만 -g는 global로 설치를 하는 옵션입니다.
작업할 폴더로 이동후에 다음 명령으로 sails seed를 만들어봅시다.
root@59be8027f662:/app# sails new info: Created a new Sails app `app`!
lift 명령을 통해서 sails를 띄워봅시다.
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로 사용할 수 있도록 해보겠습니다.
root@59be8027f662:/app# sails generate api user info: Created a new api!
믿기지 않겠지만 이제 user라는 object를 RESTful로 사용할 수 있게 되었습니다.
lift로 다시 sails를 띄워놓은 상태에서 curl을 사용해서 확인해보도록 하겠습니다.
우선 가져오기를 해봅시다.
root@59be8027f662:/app# curl http://localhost:1337/user []
입력한 user가 없으니 당연하게도 []로 빈 배열이 나옵니다.
이제 추가해보도록 하겠습니다.
root@59be8027f662:/app# curl -d "first_name=Jhon&last_name=Doe" http://localhost:1337/user { "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로 나올것입니다.
다른 테스트를 위해서 한명 더 추가해봅시다.
root@59be8027f662:/app# curl -d "first_name=Jane&last_name=Doe" http://localhost:1337/user { "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가 추가되었습니다.
전체를 가져와봅시다.
root@59be8027f662:/app# curl http://localhost:1337/user [ { "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번인 항목을 가져와보겠습니다.
root@59be8027f662:/app# curl http://localhost:1337/user/5 { "first_name": "John", "last_name": "Doe", "createdAt": "2014-11-07T06:43:32.337Z", "updatedAt": "2014-11-07T06:43:32.338Z", "id": 5 }
John의 성을 바꾸어 봅니다.
root@59be8027f662:/app# curl -X PUT -d "last_name=Smith" http://localhost:1337/user/5 { "first_name": "Jhon", "last_name": "Smith", "createdAt": "2014-11-07T06:43:32.337Z", "updatedAt": "2014-11-07T06:47:02.869Z", "id": 5 }
Jane을 삭제합니다.
root@59be8027f662:/app# curl -X DELETE http://localhost:1337/user/6 { "first_name": "Jane", "last_name": "Doe", "createdAt": "2014-11-07T06:44:38.373Z", "updatedAt": "2014-11-07T06:44:38.373Z", "id": 6 }
마지막으로 전체를 가져오면 다음과 같겠죠
root@59be8027f662:/app# curl http://localhost:1337/user [ { "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 서비스를 만들어보았습니다.