
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