【Backend入門】Express.js+Typescriptでのウェブサーバ

TypeScript Expressjs

概要

Express.jsとTypeScriptを使用してプロジェクトを開始する方法についての記述したいと思います。ここでは、プロジェクトのセットアップから、環境変数の設定、そして基本的なCRUD操作の実装までをカバーします。

初期設定

新しいフォルダーを作成して基本的な設定をしたいとおもいます。

$ mkdir express-pj
$ cd express-pj
$ npm init -y
Wrote to ... ... ...

{
  "name": "express-pj",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

必要なパッケージをインストールします。expres, typescript周りのモジュール。

$ npm install express dotenv
$ npm install -D typescript ts-node @types/node @types/express

Typescript関連設定のtsconfig.json、ほとんどはデフォルトで良いですがoutDirは修正をお勧めします。

...
    "outDir": "./dist",
...

環境変数ファイル「.env」を用意します

PORT=[このサーバーの接続ポート]          ← 例) 3000
DB_HOST=[ホスト名]                       ← 例) localhost
DB_USER=[データーベースユーザーID]       ← 例) testuser
DB_PASS=[データーベースユーザー暗証番号]  ← 例) testpasswd
DB_NAME=[データーベース名]               ← 例) testdb

コードを作成

index.tsを作成

srcフォルダーを作成しその中にindex.tsを作成します。

import express from 'express';

const app = express();
const port = 3000;

app.listen(3000, () => {
  console.log(`Server is running on port:${port}`);
});

実行してみます。

$ npx ts-node src/index.ts
Server is running on port:3000

APIを追加

環境変数の読み取り

import dotenv from 'dotenv';

dotenv.config();

const app = express();
const port = process.env.PORT || 3000;

jsonミドルウェア

app.use(express.json());

ルーティングを追加

app.get('/users', (req, res) => {
  res.json(users);
});

app.post('/users', (req, res) => {
  const newUser = { id: users.length + 1, ...req.body };
  users.push(newUser);
  res.status(201).json(newUser);
});

app.put('/users/:id', (req, res) => {
  const { id } = req.params;
  const index = users.findIndex(user => user.id === parseInt(id));
  if (index === -1) {
    return res.status(404).json({ message: 'User not found' });
  }
  users[index] = { ...users[index], ...req.body };
  res.json(users[index]);
});

データー

固定テータを作成して実行してみます

const users = [
  { id: 0, name: 'J.Taro', age: 35 },
  { id: 1, name: 'S.Hanako', age: 53 },
  { id: 2, name: 'K.Jiro', age: 45 }
];

実行してみる

$ npx ts-node src/index.ts
Server is running on http://localhost:3000

ブラウザで確認してみる

タイトルとURLをコピーしました