シェア
//Node.js/TypeScriptでのユーザー管理REST APIの構築(パート1:Express.js)

Node.js/TypeScriptでのユーザー管理REST APIの構築(パート1:Express.js)

REST APIをNode.js/TypeScriptで構築する(パート1: Express.js)

Node.jsでREST APIを構築する場合、リクエスト処理やルート管理を行うために、Express.jsは最もよく使われるフレームワークの一つです。Express.jsは小さなサイズで強力かつ柔軟な機能を提供し、プロジェクトに簡単に統合できます。このシリーズの記事では、Node.js/TypeScriptとExpress.jsを使ってユーザー管理のREST APIを構築する方法を紹介します。

使用するパッケージ:

  • Express
  • Typescript
  • Cors: Expressのミドルウェアで、クロスオリジンリソースシェアリングを有効にするためのものです。

I. 必要なパッケージのインストールと初期設定

まず、以下のコマンドを実行します:

npm init

次に、以下のコマンドで必要なパッケージをインストールします:

npm i express cors

さらに、開発用のパッケージも追加します:

npm i –save-dev @types/cors @types/express typescript

パッケージをインストールした後、`package.json`は以下のようになります(インストールする時期によってバージョンは異なります):

II. プロジェクト構造

この段階での基本的なプロジェクト構造は、以下の2つのファイルで構成されます:

  • app.ts
  • users/users.routes.config.ts

ここでは、各モジュールがその責任を持つようにプロジェクト構造を分けています。ユーザーモジュールには、ユーザー関連のロジックが含まれ、将来的にはユーザー以外のモジュールも作成することができます。

次回の記事では、ユーザーモジュールの中に`middleware`, `controllers`, `services`, `daos`, `dto` フォルダを追加し、各レイヤーの業務処理を明確に分ける方法を紹介します。

III. ルートとエントリーポイントapp.tsの実装

usersフォルダ内に`users.routes.config.ts`ファイルを作成し、以下のコードを記述します:

import express from 'express';

export class UsersRoutes {
    app: express.Application

    constructor(app: express.Application) {
        this.app = app;
        this.configureRoutes();
    }

    configureRoutes() {
        this.app.route(`/users`)
            .get((req: express.Request, res: express.Response) => {
                res.status(200).send(`List of users`);
            })
            .post((req: express.Request, res: express.Response) => {
                res.status(200).send(`Post to users`);
            });

        this.app.route(`/users/:userId`)
            .get((req: express.Request, res: express.Response) => {
                res.status(200).send(`GET requested for id ${req.params.userId}`);
            })
            .put((req: express.Request, res: express.Response) => {
                res.status(200).send(`PUT requested for id ${req.params.userId}`);
            })
            .patch((req: express.Request, res: express.Response) => {
                res.status(200).send(`PATCH requested for id ${req.params.userId}`);
            })
            .delete((req: express.Request, res: express.Response) => {
                res.status(200).send(`DELETE requested for id ${req.params.userId}`);
            });
        return this.app;
    }
}

`UsersRoutes`クラスは、ユーザーモジュールのルートを設定し、ルートごとにリクエストとレスポンスを処理します。

  • Request: クライアントからの要求に関する情報を含むオブジェクトです。ヘッダー、パラメーター、クエリ、ボディなどが含まれます。
  • Response: サーバーがクライアントに送る応答を表すオブジェクトで、データを送信したり、ヘッダーやステータスコードを設定するためのメソッドを提供します。

次に、エントリーポイント`app.ts`の実装を行います:

import * as bodyparser from 'body-parser';
import cors from 'cors';
import express from 'express';
import * as http from 'http';
import { UsersRoutes } from './users/users.routes.config';

const app: express.Application = express();
const port = 3000;

app.use(bodyparser.json());
app.use(cors());

new UsersRoutes(app);

app.listen(port, () => {
    console.log(`Server running at http://localhost:${port}`);
});

ここで新たに`body-parser`パッケージをインポートしています。

body-parserは、Express.jsのミドルウェアで、クライアントから送信されたHTTPリクエストのボディからデータを取り出すために使用されます。

次に、`express()`関数はExpressアプリケーションを作成するメソッドです。`app.listen()`を使って、サーバーを起動し、特定のポート(ここでは3000)でクライアントからの接続を待機します。

IV. TypeScript設定とpackage.jsonの調整

前述のコードを実装した後、サーバーを起動するための簡単な設定を行います。

まず、`tsconfig.json`というファイルを作成し、以下の設定を記述します:

{
    "compilerOptions": {
        "target": "es2016", // TypeScriptが変換するECMAScriptのバージョンを指定
        "module": "commonjs", // コンパイル後のモジュールシステム(ここではCommonJS)
        "outDir": "./dist", // コンパイルされたJavaScriptコードのディレクトリ
        "strict": true, // 厳格な型チェック
        "esModuleInterop": true, // TypeScriptとJavaScriptモジュールの互換性
        "inlineSourceMap": true // ソースマップをJavaScriptファイルに埋め込む
    }
}

次に、`package.json`の`scripts`セクションを調整します:

"scripts": {
    "start": "tsc && node ./dist/app.js",
    "debug": "export DEBUG=* && npm start",
    "test": "echo \"Error: no test specified\" && exit 1"
}

ここで、`tsc`はTypeScriptファイルをコンパイルしてJavaScriptに変換し、`node ./dist/app.js`でサーバーを実行します。

V. APIテスト

アプリケーションを起動するには、以下のコマンドを実行します:

npm start

APIが正しく動作するかをテストするために、curl(Linux)またはInvoke-WebRequest(Windows)を使用します:

GETメソッド:

curl --request GET 'localhost:3000/users/12345'
Invoke-WebRequest -Uri 'http://localhost:3000/users/12345' -Method Get

POSTメソッド:

curl --request POST 'localhost:3000/users' \
--data-raw "{}"
Invoke-WebRequest -Uri 'http://localhost:3000/users' -Method Post -ContentType 'application/json' -Body '{}'

これで、基本的なアプリケーションの骨組みが完成しました。次回の記事では、ユーザーモジュールのServices、Middleware、Controllers、Modelsの実装を紹介します。

次回もお楽しみに。

Vắn Quang Quí
PHP Developer

今すぐ応募







    福利厚生

    給料・ボーナス制度

    社員の感情・願望を理解しているので、リバークレーンベトナムは特に年2回の定期昇給制度を設けています。毎年6月と12月に評価を行い、毎年1月と7月に給与が変更されます。また、社員は月次と年次の優秀な個人には定期的な業績賞与が別で支給されます。

    日本研修制度

    世界中の新しい技術分野に触れるために、社員を日本にオンサイトさせる方針があります。さらに、技術分野か管理分野かのキャリアパスは社員の決定次第です。

    毎年社員旅行

    リバークレイン・ベトナムは、スタッフに挑戦の機会を提供するだけでなく、年に一度の魅力的な旅行で彼らを楽しませています。エキサイティングなガラディナーやチームビルディングゲームは、リバークレインのメンバー同士の絆をさらに深める手助けをします。

    リバークレイン イベント

    チームビルディング・ファミリーデー・お夏休み・中秋節などのイベントはチーム内のメンバーが接続出来るしお互いに自分のことを共有出来る機会です。ご家族員に連携する際にはそれも誇りに言われています。

    社会保険制度

    リバークレーンベトナムは従業員に社会保険、医療保険、失業手当などの社会保険制度があります。当社は、これらの保険に関するあらゆる手続きをスタッフに必ずサポートしています。さらに、他の保険契約も考慮され、検討されています。

    他福利

    社員向けの活動をサポートすることもあります。 ・文化・芸術・スポーツクラブの運営費用 ・技術研究の教科書を購入する金額 ・エンジニア試験・言語能力試験を受験料 ・ソフトスキルのセミナー・コースの参加費 ・等 また会社政策通り、他のベネフィットもあります。

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close