【node.js】expressをやめてrestifyに挑んで見る
お仕事で最近までexpress.jsを使ってバックエンドを開発していたのですが、 お客さんが次の段階に行きたいというのでexpress.jsを辞めてrestifyという netflixとかがバックエンドで使っている「restify」を使ってみようという結論に至りました。
そこまで言う程express.jsを使い込んだというわけではありませんが、 技術者的に使ったこと無い技術は使っていきたいというのが根本にあります。
なので今回はreftifyの紹介と入門だけしてみようと思います。
後でやっておこうっていうものは大体やらなくなってしまうので、 記事を書くという名目で前々からやろうとしてたことを入門していくのは結構いいかもしれません。
restifyとは
node.js製のバックエンドフレームワークとして広く使われていて有名なexpress.jsですが 多機能で使わない部分も結構あるため言ってしまえばバックエンドとして無駄が多いフレームワークでもあります。
最近ではバックエンドとフロントエンドを完全に切り分けて開発を行うことが多く バックエンドは内部処理且つAPIサーバーのみという形が理想なんじゃないかなということで 色々削ぎ落として軽量にしたものがrestifyという感じらしいです。
まだこの時点で実際に使っていないのでなんともですがこれから使ってみて expressより良い点を探してみましょう。
関係ないですがspotifyとかshopifyとかなんとか「fy」って名前が最近増えてきつつありますね。
なんの流れなんでしょうか……
restifyを導入してみる
大体の人はNode.jsと相性のいいNoSQLを使うようですが、一旦MySQLで挑んでみます。
なにはともあれ、インストールから始めます。
node.jsやyarnなどの導入は済んでいるものとします。
yarnとnpmはどちらでもOKです。
新たなディレクトリを作ってその中に入れていきましょう。
mkdir restifydir
cd restifydir
yarn init -y
yarn add restify
インストール自体はこれだけでOKです。
ルートディレクトリにsrcディレクトリを作ってそこにmain.jsファイルを入れていきます。
mkdir src
touch ./src/main.js
それでは作ったmain.jsにコードを書いていきましょう。
restifyのHelloWorldをやる
restify公式のQuickStartを元にやっていきます。
// モジュール読み込み
let restify = require('restify');
// レスポンス用の関数
const respond = (req, res, next) => {
res.send('こんにちは' + req.params.name);
next();
}
// サーバーの生成
let server = restify.createServer();
// APIの設定
server.get('/hello/:name', respond);
// HTTPヘッダの設定(多分
server.head('/hello/:name', respond);
// サーバーの立ち上げ
server.listen(8080, () => {
console.log('%s listeng at %s', server.name, server.url);
});
やり方としてはexpressと大差ありませんね。
モジュールを読み込み、APIを作ってレスポンスを準備し、サーバーを立ち上げる。
一応動いているかチェックしてみましょう。
curlを使います。
curl -is http://localhost:8080/hello/hoge -H 'accept: text/plain'
HTTP/1.1 200 OK
Server: restify
Content-Type: application/json
Content-Length: 21
Date: Fri, 14 May 2021 00:07:15 GMT
Connection: keep-alive
Keep-Alive: timeout=5
"こんにちはhoge"
こんな感じにサーバーからレスポンスが返ってくればOKです。
ただこれだけだとrestifyの意味合いがあんまりないですね。
違うのはexpressだとrouter関数を使ってルーティングしていくのに対して こっちはもうサーバーオブジェクトそのものにgetとかを指定してる感じでしょうか。
シンプルでいいですね。
入門ということで一旦これで終わりましょう。
次回はrestifyの持つ昨日を体験していこうと思います。