N予備校プログラミング入門メモ13
はじめに
この前テンション低すぎてしんどかったので昨日はちょっと休憩した。
4章 実践サーバーサイドプログラミング
01.Webフレームワーク
- ここまでで安全に作るのがいかに大変かを知ったので、楽をするノウハウを学んでいく
- Express
express generatorをインストールして実行するとプロジェクトに必要なファイル群が用意される。
npm install -g express-generator@4.13.0 express express-study
以下で実行。
DEBUG=express-study:* PORT=8000 npm start
DEBUG=express-study:*
はexpress-study
のログを表示するという意味のようだ。
npm start
はpackage.jsonにあらかじめ設定されたコマンドが実行されるとのことなので中身を見てみる。
"scripts": { "start": "node ./bin/www" },
これっぽいのでnpm start
をnode ./bin/www
に置き換えてみると実行できた。
Expressのdebugモジュールを使ってみる。
debug
モジュールをrequire
で例えばdebug
という変数に読み込むと、そのまま関数として使えるのでdebug('module:info')``debug('module:error')
のように呼び出す。それぞれの戻り値がログを吐く関数になる。debug('module:info')
はInfoレベル、debug('module:error')
はErrorレベルのログを吐くという意味だろう。これら二つの関数を1秒ごとに呼びだすようにサーバーを書き換えて起動すると以下のようにログが表示された。
module:info some information. +28ms module:error some errors. +5ms module:info some information. +1s module:error some errors. +1ms module:info some information. +1s module:error some errors. +0ms
debug('express-study:info')
のように書き換えたらそのように表示された。なるほど。+28ms
等は前回のログからどれくらい経って表示されたかを表す。処理にどれだけ時間がかかったかをはかることもできる。
02.Express の API
X-Powered-By
というヘッダから何というフレームワークを使って作られているかが分かってしまう(危ない)。
helmetを使うとデフォルトで危ない動きを変更してくれる。
helmet
モジュールをインストールしてapp.js
で読み込み、以下のようにすると有効になる。
var app = express(); app.use(helmet());
サーバを再起動して開発者ツールを確認するとX-Powered-By
の表示が消え……てないな! なんだろう……前のプロジェクト(express-study)のapp.js
を編集してた。そりゃうまくいかんわ。ちゃんとexpress-api
のapp.js
を編集したら表示が消えていました。
app.js
をざっと解説しているけど、404のハンドラやエラーを表示するハンドラの登録はどれもapp.use
に関数を渡しているだけに見えるが、どうやって判定しているのかわからない。例えばこれは404の関数、ってどうやって分かるのか、これは〇〇のときの関数にしたいっていう意思表示をどうやってするのか?
03.GitHub を使った外部認証
- OAuth2.0
- Twitterアカウントとかでログインするあれだったはず
- passportモジュールを使ってGitHubでの認証を実装する
- GitHubにアプリを登録する
- Node.js のイベントループの仕組みについて
使用するモジュールをインストール。
npm install passport@0.3.2 --save npm install passport-github2@0.1.9 --save npm install express-session@1.13.0 --save
PCのバッテリーがなくなってきたのでそろそろ帰る。