express-rest-api について
Express.js で REST API を構築する Node.js 開発者向けの学習・実装ガイドです。Web やモバイルアプリのバックエンド、マイクロサービス、API 中心のプロジェクトを対象に、ルーティングからセキュリティ、テスト、デプロイまで扱います。
主な機能
- 01Express アプリとルート構成の例
- 02ミドルウェアとエラー処理のパターン
- 03RESTful エンドポイント設計の指針
- 04セキュリティ、検証、レート制限の助言
- 05プロジェクト構成と本番チェックリスト
活用シーン
- 01Web またはモバイルアプリのバックエンド構築
- 02マイクロサービス API の開発
- 03API への認証と入力検証の追加
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pluginagentmarketplace/ custom-plugin-nodejs --skill express-rest-apiインストール後、Claude Code で/express-rest-apiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/config.yamlreferences/GUIDE.mdscripts/helper.py詳細
Express REST API スキル
Node.js の Web フレームワークで事実上の標準となっている Express.js で、堅牢でスケーラブルな REST API を構築する方法を習得しましょう。
クイックスタート
5 つのステップで基本的な Express API を構築します。
- Express のセットアップ -
npm install express - ルートの作成 - GET、POST、PUT、DELETE のエンドポイントを定義します
- ミドルウェアの追加 - JSON パーサー、CORS、セキュリティヘッダー
- エラー処理 - 一元化されたエラー処理
- テストとデプロイ - Postman/Insomnia を使用し、クラウドにデプロイします
基本概念
1. Express アプリケーションの構造
const express = require('express');
const app = express();
// Middleware
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// Routes
app.use('/api/users', userRoutes);
app.use('/api/products', productRoutes);
// Error handling
app.use(errorHandler);
app.listen(3000, () => console.log('Server running'));
2. RESTful なルート設計
// GET /api/users - Get all users
// GET /api/users/:id - Get user by ID
// POST /api/users - Create user
// PUT /api/users/:id - Update user
// DELETE /api/users/:id - Delete user
const router = express.Router();
router.get('/', getAllUsers);
router.get('/:id', getUserById);
router.post('/', createUser);
router.put('/:id', updateUser);
router.delete('/:id', deleteUser);
module.exports = router;
3. ミドルウェアのパターン
// Authentication middleware
const authenticate = (req, res, next) => {
const token = req.headers.authorization;
if (!token) return res.status(401).json({ error: 'Unauthorized' });
// Verify token...
next();
};
// Validation middleware
const validate = (schema) => (req, res, next) => {
const { error } = schema.validate(req.body);
if (error) return res.status(400).json({ error: error.message });
next();
};
// Usage
router.post('/users', authenticate, validate(userSchema), createUser);
4. エラー処理
// Custom error class
class APIError extends Error {
constructor(message, statusCode) {
super(message);
this.statusCode = statusCode;
}
}
// Global error handler
app.use((err, req, res, next) => {
const statusCode = err.statusCode || 500;
res.status(statusCode).json({
success: false,
error: err.message,
...(process.env.NODE_ENV === 'development' && { stack: err.stack })
});
});
学習パス
初級(2~3 週間)
- ✅ Express をセットアップし、基本的なルートを作成する
- ✅ ミドルウェアの概念を理解する
- ✅ CRUD 操作を実装する
- ✅ Postman でテストする
中級(4~6 週間)
- ✅ 認証(JWT)を実装する
- ✅ 入力値のバリデーションを追加する
- ✅ コードを整理する(MVC パターン)
- ✅ データベースに接続する
上級(8~10 週間)
- ✅ API のバージョン管理(
/api/v1/、/api/v2/) - ✅ レート制限とセキュリティ
- ✅ ページネーションとフィルタリング
- ✅ API ドキュメント(Swagger)
- ✅ パフォーマンスの最適化
必須パッケージ
{
"dependencies": {
"express": "^4.18.0",
"helmet": "^7.0.0", // Security headers
"cors": "^2.8.5", // Cross-origin requests
"morgan": "^1.10.0", // HTTP logger
"express-validator": "^7.0.0", // Input validation
"express-rate-limit": "^6.0.0" // Rate limiting
}
}
一般的なパターン
レスポンス形式
// Success
{ success: true, data: {...} }
// Error
{ success: false, error: "Message" }
// Pagination
{
success: true,
data: [...],
pagination: { page: 1, limit: 10, total: 100 }
}
HTTP ステータスコード
200 OK- GET/PUT の成功201 Created- POST の成功204 No Content- DELETE の成功400 Bad Request- バリデーションエラー401 Unauthorized- 認証が必要です403 Forbidden- 権限がありません404 Not Found- リソースが見つかりません500 Internal Error- サーバーエラー
プロジェクト構成
src/
├── controllers/ # Route handlers
├── routes/ # Route definitions
├── middlewares/ # Custom middleware
├── models/ # Data models
├── services/ # Business logic
├── utils/ # Helpers
└── app.js # Express setup
本番環境へのデプロイ前チェックリスト
- ✅ 環境変数(.env)
- ✅ セキュリティヘッダー(Helmet)
- ✅ CORS の設定
- ✅ レート制限
- ✅ 入力値のバリデーション
- ✅ エラー処理
- ✅ ロギング(Morgan/Winston)
- ✅ テスト(Jest/Supertest)
- ✅ API ドキュメント
実例
ユーザー API の完全な例:
const express = require('express');
const router = express.Router();
const { body } = require('express-validator');
// GET /api/users
router.get('/', async (req, res, next) => {
try {
const { page = 1, limit = 10 } = req.query;
const users = await User.find()
.limit(limit)
.skip((page - 1) * limit);
res.json({ success: true, data: users });
} catch (error) {
next(error);
}
});
// POST /api/users
router.post('/',
body('email').isEmail(),
body('password').isLength({ min: 8 }),
async (req, res, next) => {
try {
const user = await User.create(req.body);
res.status(201).json({ success: true, data: user });
} catch (error) {
next(error);
}
}
);
module.exports = router;
使用する場面
次のような場合に Express REST API を使用します。
- Web/モバイルアプリのバックエンドを構築する
- マイクロサービスを作成する
- API ファーストのアプリケーションを開発する
- 柔軟で軽量なフレームワークが必要
- 豊富なエコシステムとコミュニティを活用したい
関連スキル
- 非同期プログラミング(非同期処理を扱う)
- データベース連携(MongoDB/PostgreSQL に接続する)
- JWT 認証(API を保護する)
- Jest テスト(エンドポイントをテストする)
- Docker デプロイ(API をコンテナ化する)
リソース
コメント
Markdown 対応