「API開発、どう始めればいいの?」と悩んでいませんか?
現役WEBエンジニアとして、API開発を行っています。
この記事では、REST APIの基本を解説します。
目次
REST APIとは
基本概念
- REST: Representational State Transfer
- HTTPメソッドでリソースを操作
- JSON形式でデータをやり取り
HTTPメソッド
| メソッド | 用途 | 例 |
|---|---|---|
| GET | 取得 | ユーザー一覧 |
| POST | 作成 | ユーザー登録 |
| PUT | 更新(全体) | ユーザー情報更新 |
| PATCH | 更新(部分) | メール変更 |
| DELETE | 削除 | ユーザー削除 |
URL設計
良い設計
GET /users # ユーザー一覧
GET /users/1 # ユーザー詳細
POST /users # ユーザー作成
PUT /users/1 # ユーザー更新
DELETE /users/1 # ユーザー削除
# ネストしたリソース
GET /users/1/posts # ユーザーの投稿一覧
悪い設計
GET /getUsers # 動詞を使わない
POST /createUser # メソッドで表現
GET /user/delete/1 # DELETEを使う
レスポンス設計
ステータスコード
| コード | 意味 |
|---|---|
| 200 | 成功 |
| 201 | 作成成功 |
| 400 | リクエストエラー |
| 401 | 認証エラー |
| 403 | 権限エラー |
| 404 | 見つからない |
| 500 | サーバーエラー |
レスポンス例
// 成功
{
"data": {
"id": 1,
"name": "田中",
"email": "tanaka@example.com"
}
}
// エラー
{
"error": {
"code": "VALIDATION_ERROR",
"message": "メールアドレスが不正です"
}
}
Node.js(Express)での実装
セットアップ
npm init -y
npm install express
基本的なAPI
const express = require('express');
const app = express();
app.use(express.json());
// ユーザー一覧
app.get('/users', (req, res) => {
res.json({ data: users });
});
// ユーザー詳細
app.get('/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ error: 'Not found' });
res.json({ data: user });
});
// ユーザー作成
app.post('/users', (req, res) => {
const user = { id: Date.now(), ...req.body };
users.push(user);
res.status(201).json({ data: user });
});
app.listen(3000);
認証
認証方式
| 方式 | 特徴 |
|---|---|
| APIキー | シンプル、セキュリティ低 |
| JWT | ステートレス、人気 |
| OAuth2 | 標準的、外部連携 |
JWTの例
const jwt = require('jsonwebtoken');
// トークン生成
const token = jwt.sign({ userId: 1 }, 'secret', { expiresIn: '1h' });
// 認証ミドルウェア
const auth = (req, res, next) => {
const token = req.headers.authorization?.split(' ')[1];
if (!token) return res.status(401).json({ error: 'Unauthorized' });
try {
const decoded = jwt.verify(token, 'secret');
req.userId = decoded.userId;
next();
} catch {
res.status(401).json({ error: 'Invalid token' });
}
};
テスト
Postman
- GUIでAPIテスト
- リクエスト保存・共有
- 環境変数管理
curlコマンド
# GET
curl http://localhost:3000/users
# POST
curl -X POST http://localhost:3000/users \
-H "Content-Type: application/json" \
-d '{"name": "田中"}'
まとめ
REST API開発のポイント:
- HTTPメソッドを正しく使う
- URL設計はリソースベース
- ステータスコードを適切に
- 認証を実装する
