express について
Node.js の HTTP サーバーや REST API を構築する開発者向けの Express スキルです。ルーティング、ミドルウェア、入力検証、エラー処理、セキュリティヘッダー、本番デプロイの指針を扱います。
主な機能
- 01Express アプリとミドルウェアの設定
- 02ルートとルーターの整理
- 03非同期エラー処理
- 04CORS とセキュリティヘッダー
- 05REST API の検証とレスポンス
活用シーン
- 01Node.js HTTP サーバーの作成
- 02ルーターによる REST API エンドポイントの整理
- 03非同期ルートハンドラーの例外処理
- 04本番環境向け Express アプリの準備
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ partme-ai/ full-stack-skills --skill expressインストール後、Claude Code で/expressを入力して読み込まれたか確認します。
同梱ファイルLICENSE.txt
詳細
このスキルを使用する場面
次のことをユーザーが求めている場合は、このスキルを使用します。
- Express のルーティングとミドルウェアを使って Node.js の HTTP サーバーを構築する
- CORS、ボディ解析、エラー処理、静的ファイルを設定する
- リクエストの検証とレスポンスのフォーマットを備えた REST API を作成する
- セキュリティヘッダーを備えた本番環境対応の Express アプリケーションをセットアップする
このスキルの使用方法
ワークフロー
- アプリを作成する — Express をインスタンス化し、ミドルウェアを設定します
- ルートを定義する — 各エンドポイントのルートハンドラーをセットアップします
- エラー処理を追加する — 一貫したレスポンスを返すエラーミドルウェアを実装します
- デプロイする — HTTPS を使用し、リバースプロキシの背後で実行します
クイックスタートの例
const express = require('express');
const cors = require('cors');
const helmet = require('helmet');
const app = express();
// Middleware
app.use(helmet());
app.use(cors());
app.use(express.json());
// Routes
app.get('/api/items', async (req, res, next) => {
try {
const items = await Item.findAll();
res.json({ items });
} catch (err) {
next(err);
}
});
app.post('/api/items', async (req, res, next) => {
try {
const { name, price } = req.body;
const item = await Item.create({ name, price });
res.status(201).json(item);
} catch (err) {
next(err);
}
});
// 404 handler
app.use((req, res) => {
res.status(404).json({ error: 'Not found' });
});
// Error middleware (must have 4 params)
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(err.status || 500).json({
error: err.message || 'Internal server error',
});
});
app.listen(3000, () => console.log('Server running on port 3000'));
非同期エラーラッパー
// Wrap async handlers to catch rejected promises
const asyncHandler = (fn) => (req, res, next) =>
Promise.resolve(fn(req, res, next)).catch(next);
app.get('/api/users', asyncHandler(async (req, res) => {
const users = await User.findAll();
res.json(users);
}));
ルーターの例
// routes/items.js
const router = require('express').Router();
router.get('/', asyncHandler(async (req, res) => { /* ... */ }));
router.post('/', asyncHandler(async (req, res) => { /* ... */ }));
router.get('/:id', asyncHandler(async (req, res) => { /* ... */ }));
module.exports = router;
// app.js
app.use('/api/items', require('./routes/items'));
ベストプラクティス
- ルートとミドルウェアをモジュールに分割し、整理には
express.Router()を使用します - 未処理の拒否を防ぐため、非同期ハンドラーは必ず try/catch またはラッパーで囲みます
- セキュリティヘッダーには
helmetを使用し、本番環境のオリジン向けに CORS を設定します - 本番環境では、HTTPS を使用し、リバースプロキシ(nginx)の背後にデプロイします
- リクエストのログ記録には
morganを使用し、構造化されたエラーレスポンスを返します
リファレンス
- 公式ドキュメント:https://expressjs.com/
キーワード
express、Node.js、ミドルウェア、ルーティング、REST API、エラー処理、非同期、helmet、cors
コメント
Markdown 対応