REST API を Node.js と Express で作ってみる (1)
環境は Ubuntu 18.04 になりました〜w
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
Node はインストール済み(前の記事)
$ node -v v10.10.0 $ npm -v 6.4.1
さて、Node.js と Express で REST API の一番基礎的な部分を作ってみたいということでやってみました。
この記事と次の続き(2)は、基本こちらのサイトを参考にさせていただきました。
ただOS環境と Node.js や npm のバージョンが大きく変わっている点、またNodeモジュールをローカルインストールすることにこだわった点などが違うので、アプリの雛形を作る課程も違っています。
Express と express-generator をインストール
まずプロジェクトのDIRを作りその中で作業。
とりあえずnpm init
を実行し、package.json
を書き出しておく。
$ mkdir myapp $ cd myapp $ npm init
ここで Express と express-generator をローカルにインストールする。
$ npm install --save express express-generator + express-generator@4.16.1 + express@4.16.4 .....................................
ubuntu で -g
でグローバルインストールする場合は、sudo が必要だ。また、express-generator をインストールした後でないと、express
コマンドは使えない。
だがここでは --save でアプリケーションのプロジェクトにインストールする。
Node.jsのモジュールはローカルインストールした方がいいと思う。 そのあたりの参考:
https://arui.tech/why-locally-install-is-much-better-than-globally-in-npm/arui.tech
npx コマンドを使えば、ローカルでも express
コマンドを実行できる。
$ npx express --version 4.16.1
ちなみに参考サイトのnpm5.2.0
のときは、npm install -g npx
でnpx
をあらかじめグローバルインストールしておく必要があったらしいが、今はnpm
にバンドルされているため、npx
の個別インストールは不要。
アプリの雛形を生成
$ npx express warning: the default view engine will not be jade in future releases warning: use `--view=jade' or `--help' for additional options destination is not empty, continue? [y/N] y create : public/ create : public/javascripts/ create : public/images/ create : public/stylesheets/ create : public/stylesheets/style.css create : routes/ create : routes/index.js create : routes/users.js create : views/ create : views/error.jade create : views/index.jade create : views/layout.jade create : app.js create : package.json create : bin/ create : bin/www install dependencies: $ npm install run the app: $ DEBUG=myapp:* npm start
一度npm init
した際にpackage.json
が書き出されているので「ディレクトリが空ではないけど...」の警告が出ているが上書きで進む。
この段階でのpackage.json
の中身
{ "name": "myapp", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "cookie-parser": "~1.4.4", "debug": "~2.6.9", "express": "~4.16.1", "http-errors": "~1.6.3", "jade": "~1.11.0", "morgan": "~1.9.1" } }
express-generator は最初のインストール時に"dependencies"に記入されるのだが、この段階で消える。あくまで開発用のモジュールなので支障は無い。
npm install
を実行。
$ npm install
npm が package.json を見て、node_modulesフォルダに、必要なパッケージをインストールしてくれる。
デフォルトのREST APIを実行してみる
npm start
とすると、node ./bin/www
が実行される。これは package.json の scripts に書かれたコマンドだ。
...... "scripts": { "start": "node ./bin/www" }, ......
$ npm start > myapp@0.0.0 start /home/jgb/MyCode/nodejs/myapp > node ./bin/www
./bin/www
はスクリプトでWEBサーバを立ち上げている。
var app = require('../app'); ...... var server = http.createServer(app);
ブラウザで http://localhost:3000/ にアクセスすると、
Express
Welcome to Express
と表示される。ここでアクセスされているのはファイルとしては myapp/routes/index.js
さらに、http://localhost:3000/users にアクセスすると、
と表示される。
突然 users というアドレスが出てきて何?と思うが、ここでアクセスされているのは myapp/routes/users.js
。自動的に作られたもの。
ほとんどデフォルトのままで/
とusers
という2つのアドレス(ディレクトリ名)に対応する振り分け先が myapp/routes/xxxx.js
というjsファイルの実行内容と紐付けられている。
ここまでで、REST APIを作る準備はできている。
簡単w
Ctrl + C で Node.js を停止。