挨拶
お久しぶりです。いっちーです。
2017年の9月くらいに書いた記憶があるので、5ヶ月ぶりでしょうか。
本当は昨日ぐらいに投稿したかったんですが、週明け早々に胃腸炎になってしまいまして..
先週までインフルが流行っていたので、熱が出た時は「ついに来たか..!」と思いましたが、今年は予防接種が効いているみたいです。
丸2日休んだのでだいぶ良くなり、
今はリモートしながら窓越しに青空を見つつ気持ち良い気分でパソコンを叩いています。
さて、今回ネタをいくつか考えていたんですが、何を書こうか色々迷っていました。
・ アニメの情報を返してくれるAPIを使って遊ぶ
・ 新しいアプリを考えるためにブルー・オーシャン戦略を使ってみる
…など
ただ、遊び寄りだったりビジネス寄りなので技術要素少ないな〜と思い、
タイトルにもあるようにNode.jsを使ってAPI作る、ということをやってみました。
業務ではPHPメインでサーバーサイド開発をしているので、たまには違うものに触れてみようと思った次第でございます。
概要
以下の手順でNode.jsの動かし方が分かる、というのが今回のゴールです。
対象者は、サーバーサイドのプログラミング言語を普段使っている方、になると思います。
環境は OSX 10.12.6 を想定しています。
① nvm(Node.jsのバージョン切り替えツール)のインストール
② Node.jsのインストール
③ Express(Node.jsのフレームワーク)のインストール
④ npm(パッケージ管理ツール)のインストール
⑤ Node.jsの起動
⑥ ルーティングの変更
やってみよう
では実際にやっていきましょう。
①nvmのインストール
1 2 |
$ git clone https://github.com/creationix/nvm.git ~/.nvm $ source ~/.nvm/nvm.sh |
1 |
$ nvm help |
ヘルプが表示されれば成功です。
②Node.jsのインストール
まず、バージョンがどこまで出ているか確認します。
1 |
$ nvm ls-remote |
偶数が安定版、奇数が最新版のようです。
最新の安定版にしておけば問題ないでしょう。
1 2 |
$ nvm install 9.4.0 $ node -v |
試した時は9.4.0まで出ていたので、これにしておきました。
バージョン確認もしておきましょう。
このままだとターミナルをまた起動した時に同じコマンドを打たなくてはならないので、
使うバージョンを記憶させておきましょう。
1 |
$ nvm alias default v9.4.0 |
次に .bash_profile に追記します。
1 |
$ vi ~/.bash_profile |
下記を追記します。
1 2 3 |
if [[ -s ~/.nvm/nvm.sh ]]; then source ~/.nvm/nvm.sh fi |
これでターミナル起動時にNode.jsが使えるようになりました。
③Expressのインストール
次に、Expressをインストールしましょう。
1 2 |
$ npm install -g express-generator $ express --version |
expressコマンドが動くことも確認しましょう。
④npmのインストール
任意のディレクトリでNodeプロジェクトを初期化します。
1 |
$ npm init |
全てEnter、yesで進めて大丈夫です。
その後、Expressをプロジェクトで使用する宣言を行います。
1 |
$ express |
そして、パッケージをインストールします。
1 |
$ npm install |
⑤Node.jsの起動
1 |
$ npm start |
起動したら http://localhost:3000/ にアクセスしてみましょう。
welcomeメッセージが出たら成功です。
⑥ルーティングの変更
サンプル的なファイルが作成されているので、それらを変更してAPIを作成していきましょう。
まずは、app.js
1 |
app.use('/api/v1/users', users); |
次に routes/users.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
var express = require('express'); var router = express.Router(); // ユーザのサンプルデータ var userList = [ { id: "1", name: "icchy", age: "24", hobby: "card game" },{ id: "2", name: "icchy-san", age: "24", hobby: "hip hop" } ] // GET router.get('/', function(req, res, next) { res.json(userList); }); module.exports = router; |
そうすると、結果が得られるようになります。
1 |
$ curl http://localhost:3000/api/v1/users |
ハマったりもせず、割とサクっとここまでこれました。
今後はここから拡張して色々作っていけたらと思います。楽しかったらまたブログにしますね。
参考
・ https://liginc.co.jp/web/programming/node-js/85318
・ https://qiita.com/keneo/items/c5e6a4ee5b94464d48bf
16卒入社。モニプラの開発・運用がメインです。