Node.jsのフレームワークExpressの利用

Node.jsのフレームワークExpressの利用

2024/02/04

2024/02/04

ExpressはNode.js 上で動作する Web アプリケーションフレームワークです。
ExpressとSQLiteを使用したサンプルソースです。

特徴

・非常に軽量なフレームワークであり、高速なパフォーマンスを実現できる
・Express はシンプルな API を提供しており、初心者でも簡単に使い始めることができる
・ルーティング、ミドルウェア、テンプレートエンジン、エラーハンドリングなど、Web アプリケーション開発に必要な機能が揃っている

用途

・静的ファイル配信や簡単な API エンドポイントを提供するような、シンプルな Web サイトの開発
・REST API サーバーの開発
・WebSockets などを用いたリアルタイムアプリケーションの開発

npm install

以下コマンドでパッケージをインストールします。

npm init -y
npm i express
npm i sqlite3


サンプルソース

db.js

const sqlite3 = require('sqlite3').verbose();

const db = new sqlite3.Database('./database.sqlite3');

// テーブル作成
db.run(`CREATE TABLE IF NOT EXISTS users (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT NOT NULL,
  email TEXT NOT NULL
)`);

module.exports = db;


app.js

const express = require('express');
const app = express();
app.use(express.json());

const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('./database.sqlite3');


// GET /users エンドポイント
app.get('/users', (req, res) => {
    db.all('SELECT * FROM users', (err, rows) => {
        if (err) {
            res.status(500).send('An error occurred.');
            return;
        }

        res.json(rows);
    });
});

// POST /users エンドポイント
app.post('/users', (req, res) => {
    const { name, email } = req.body;

    db.run('INSERT INTO users (name, email) VALUES (?, ?)', [name, email], (err) => {
        if (err) {
            console.log('Error:', err);
            res.status(500).send('An error occurred.');
            return;
        }

        res.status(201).send('User created successfully.');
    });
});

// DELETE /users エンドポイント
app.delete('/users/:id', (req, res) => {
    const { id } = req.params;

    db.run('DELETE FROM users WHERE id = ?', id, (err) => {
        if (err) {
            res.status(500).send('An error occurred.');
            return;
        }

        res.status(200).send('User deleted successfully.');
    });
});

// サーバーの起動
app.listen(3000, () => {
    console.log('Server is listening on port 3000');
});


利用方法

テーブルの作成

node db.js


サーバの起動

node app.js


リクエスト

# GET
curl -X GET localhost:3000/users

# POST
curl -X POST -H "Content-Type: application/json" -d '{"name":"Tom", "email":"test@test.jp"}' localhost:3000/users

# DELETE
curl -X DELETE localhost:3000/users/1


参考資料

Express公式サイト
Expressチュートリアル