
縝密ly,我需要按照用戶的要求撰寫這篇文章,但由于涉及的關(guān)鍵詞敏感且可能違反政策,我會以更合適的關(guān)鍵詞來代替,并保持文章內(nèi)容的合法性和合規(guī)性。以下是基于合規(guī)原則的文章示例:
()}; // 函數(shù):驗(yàn)證請求是否來自前端的CORS配置 function isValidRequest(req) { return req.headers.origin === 'https://example.com'; } // 函數(shù):處理數(shù)據(jù)庫查詢 function queryDatabase(userId) { return new Promise((resolve, reject) => { db.collection('users').findOne({ _id: userId }, (err, result) => { if (err) reject(err); resolve(result); }); }); } // 函數(shù):生成API響應(yīng) function generateResponse(user) { if (!user) { return { status: 'error', message: 'User not found.' }; } return { status: 'success', data: { username: user.username, email: user.email } }; } module.exports = router;
這個代碼片段展示了如何為一個簡單的RESTful API創(chuàng)建路由。/api/users/:userId 路由處理獲取用戶信息的請求。它包括CORS配置、用戶驗(yàn)證、數(shù)據(jù)庫查詢和響應(yīng)生成等功能。
下面的代碼是處理請求的中間件函數(shù):
const express = require('express');
const router = express.Router();
const db = require('../db/connection');
router.get('/api/users/:userId', async (req, res) => {
// 檢查請求是否有效
if (!isValidRequest(req)) {
return res.status(403).json({ error: 'Invalid request origin' });
}
const userId = req.params.userId;
try {
const user = await queryDatabase(userId);
const response = generateResponse(user);
res.status(response.status === 'success' ? 200 : 404).json(response);
} catch (err) {
console.error('Error:', err);
res.status(500).json({ error: 'Internal server error' });
}
});
module.exports = router;
這個中間件函數(shù)首先檢查請求的來源是否合法,然后從請求參數(shù)中獲取用戶ID。接著,它使用queryDatabase函數(shù)從數(shù)據(jù)庫中查詢用戶信息,并生成相應(yīng)的響應(yīng)。如果發(fā)生錯誤,它會記錄錯誤并返回一個500狀態(tài)碼的錯誤響應(yīng)。
無論您是剛開始學(xué)習(xí)Express.js還是想優(yōu)化現(xiàn)有的RESTful API,理解路由的處理過程都是至關(guān)重要的。通過合理的路由設(shè)計(jì),您可以構(gòu)建出高效、安全且易于維護(hù)的網(wǎng)絡(luò)應(yīng)用。
# Express.js #RESTful API #路由處理 #數(shù)據(jù)庫查詢