🦝

fastifyに入門してみた

2023/07/08に公開

Node.jsのフレームワークらしい?

公式の解説を翻訳
なぜ
効率的なサーバーは、インフラストラクチャーのコストを下げ、負荷に対する応答性を向上させ、ユーザーを満足させます。可能な限り多くのリクエストに対応し、セキュリティ検証や便利な開発を犠牲にすることなく、サーバーのリソースを効率的に処理するにはどうすればよいでしょうか?

Fastifyの登場です。Fastifyは、最小のオーバーヘッドと強力なプラグインアーキテクチャで最高の開発者体験を提供することに重点を置いたウェブフレームワークです。HapiとExpressにインスパイアされ、私たちが知る限り、最も高速なWebフレームワークの1つです。

https://fastify.dev/

📗チュートリアルをやってみる

今回は、TypeScriptを使用。

🔧fastifyの環境構築

はじめに
この例では、FastifyとTypeScriptの使い方を説明します。空白の http Fastify サーバーが作成されます。

新しいnpmプロジェクトを作成し、Fastifyをインストールし、peer dependenciesとしてtypescriptとnode.js typesをインストールします:

npm init -y
npm i fastify
npm i -D typescript @types/node

package.jsonの "scripts "セクションに以下の行を追加する:

{
  "scripts": {
    "build": "tsc -p tsconfig.json",
    "start": "node index.js"
  }
}

TypeScript 設定ファイルを初期化する:

npx tsc --init

注意: FastifyDeprecation の警告を回避するには、tsconfig.json の target プロパティを es2017 以上に設定してください。

注意2:"moduleResolution" の使用は避けてください:注2:tsconfig.jsonの "moduleResolution": "NodeNext "とpackage.jsonの "type":package.json の "type": "module" との併用は避けてください。ts(2349) 警告。

index.tsファイルを作成してください。

以下のコードブロックをファイルに追加してください:

import fastify from 'fastify'

const server = fastify()

server.get('/ping', async (request, reply) => {
  return 'pong\n'
})

server.listen({ port: 8080 }, (err, address) => {
  if (err) {
    console.error(err)
    process.exit(1)
  }
  console.log(`Server listening at ${address}`)
})

npm run buildを実行します。これでindex.tsがindex.jsにコンパイルされ、Node.jsで実行できるようになります。エラーが発生した場合は、fastify/helpにissueを登録してください。

npm run start を実行して Fastify サーバーを実行します。

コンソールにServer listening at http://127.0.0.1:8080 と表示されるはずです。

curl localhost:8080/ping を使ってサーバーを試してみてください。

curlコマンドでエンドポイントにアクセスする。

curl localhost:8080/ping

まとめ

今の状態だと、curlを使ってもターミナルに、pingと表示されるだけなので、次はREST APIを作って、POSTとGETをやってみようと思います。

Discussion