Node.js Express API Responses
Node.jsとExpressでREST APIのレスポンスステータスとJSONコンテンツを設定する方法
REST APIをNode.jsとExpressを使って作成する場合、適切なレスポンスステータスとJSONコンテンツを設定することは非常に重要です。これにより、クライアントがAPIの成功や失敗を理解し、適切なアクションを実行できるようになります。
レスポンスステータスの設定
Expressでは、res.status()
メソッドを使ってレスポンスステータスを設定します。ステータスコードはHTTP仕様で定義されており、一般的なコードは以下のとおりです。
- 500 Internal Server Error
サーバー側のエラーが発生しました。 - 404 Not Found
リクエストされたリソースが見つかりません。 - 403 Forbidden
権限がありません。 - 401 Unauthorized
認証が必要ですが、提供されていません。 - 400 Bad Request
クライアント側のエラーが発生しました。 - 201 Created
新しいリソースが作成されました。 - 200 OK
リクエストが成功しました。
例
app.get('/users/:id', (req, res) => {
// ユーザー情報の取得処理
const user = getUserById(req.params.id);
if (user) {
res.status(200).json(user);
} else {
res.status(404).json({ message: 'User not found' });
}
});
JSONコンテンツの設定
Expressでは、res.json()
メソッドを使ってJSONオブジェクトをレスポンスとして送信します。
app.post('/users', (req, res) => {
// 新しいユーザーの作成処理
const newUser = createUser(req.body);
res.status(201).json(newUser);
});
適切なステータスコードとコンテンツの選択
- サーバーエラーの場合
500 Internal Server Error
などのステータスコードを使用し、一般的なエラーメッセージを返します。詳細なエラー情報はログに記録することを推奨します。 - エラーの場合
400 Bad Request
、401 Unauthorized
、403 Forbidden
、404 Not Found
などのステータスコードを使用し、エラーメッセージや関連する情報をJSONで返します。 - 成功の場合
200 OK
、201 Created
などのステータスコードを使用し、成功メッセージや作成されたリソースの情報をJSONで返します。
app.get('/users/:id', (req, res) => {
// ユーザー情報の取得処理
const user = getUserById(req.params.id);
if (user) {
res.status(200).json(user);
} else {
res.status(404).json({ message: 'User not found' });
}
});
app.post('/users', (req, res) => {
// 新しいユーザーの作成処理
const newUser = createUser(req.body);
res.status(201).json(newUser);
});
Node.js Express APIレスポンス
Node.js Express APIレスポンスは、クライアントに送信されるデータとステータスコードの組み合わせです。適切なレスポンスステータスとJSONコンテンツを設定することにより、APIの可読性と信頼性を向上させることができます。
app.get('/products', (req, res) => {
// 商品情報の取得処理
const products = getAllProducts();
res.status(200).json(products);
});
res.send()メソッド
res.send()
メソッドは、任意のデータをレスポンスとして送信します。JSONオブジェクトを送信する場合は、直接JSON文字列を渡すことができます。
app.get('/users/:id', (req, res) => {
// ユーザー情報の取得処理
const user = getUserById(req.params.id);
if (user) {
res.send(JSON.stringify(user));
} else {
res.status(404).send({ message: 'User not found' });
}
});
res.format()メソッド
res.format()
メソッドは、複数のコンテンツタイプをサポートし、クライアントが要求したタイプに応じて適切なコンテンツを送信します。JSONコンテンツをサポートするには、application/json
を指定します。
app.get('/users/:id', (req, res) => {
// ユーザー情報の取得処理
const user = getUserById(req.params.id);
res.format({
json: () => res.send(user),
default: () => res.status(406).send('Not Acceptable')
});
});
サードパーティライブラリ
いくつかのサードパーティライブラリは、REST APIのレスポンスをより簡単に管理するための機能を提供します。例えば、express-response-formatter
ライブラリを使用すると、レスポンスのフォーマットをカスタマイズすることができます。
ミドルウェア
Expressのミドルウェアを使用して、レスポンスの処理をカスタマイズすることもできます。例えば、カスタムミドルウェアを作成して、レスポンスステータスやコンテンツを自動的に設定することができます。
これらの代替方法を使用することで、REST APIのレスポンスステータスとJSONコンテンツの設定をより柔軟に制御することができます。
node.js rest http