express-rest-api by pluginagentmarketplace/custom-plugin-nodejs
npx skills add https://github.com/pluginagentmarketplace/custom-plugin-nodejs --skill express-rest-api掌握使用 Express.js 构建健壮、可扩展的 REST API,这是 Node.js Web 框架的事实标准。
通过 5 个步骤构建一个基础的 Express API:
npm install expressconst express = require('express');
const app = express();
// 中间件
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// 路由
app.use('/api/users', userRoutes);
app.use('/api/products', productRoutes);
// 错误处理
app.use(errorHandler);
app.listen(3000, () => console.log('Server running'));
// GET /api/users - 获取所有用户
// GET /api/users/:id - 根据 ID 获取用户
// POST /api/users - 创建用户
// PUT /api/users/:id - 更新用户
// DELETE /api/users/:id - 删除用户
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;
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
// 身份验证中间件
const authenticate = (req, res, next) => {
const token = req.headers.authorization;
if (!token) return res.status(401).json({ error: 'Unauthorized' });
// 验证令牌...
next();
};
// 验证中间件
const validate = (schema) => (req, res, next) => {
const { error } = schema.validate(req.body);
if (error) return res.status(400).json({ error: error.message });
next();
};
// 用法
router.post('/users', authenticate, validate(userSchema), createUser);
// 自定义错误类
class APIError extends Error {
constructor(message, statusCode) {
super(message);
this.statusCode = statusCode;
}
}
// 全局错误处理器
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 })
});
});
/api/v1/, /api/v2/){
"dependencies": {
"express": "^4.18.0",
"helmet": "^7.0.0", // 安全头部
"cors": "^2.8.5", // 跨域请求
"morgan": "^1.10.0", // HTTP 日志记录器
"express-validator": "^7.0.0", // 输入验证
"express-rate-limit": "^6.0.0" // 速率限制
}
}
// 成功
{ success: true, data: {...} }
// 错误
{ success: false, error: "Message" }
// 分页
{
success: true,
data: [...],
pagination: { page: 1, limit: 10, total: 100 }
}
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/ # 路由处理器
├── routes/ # 路由定义
├── middlewares/ # 自定义中间件
├── models/ # 数据模型
├── services/ # 业务逻辑
├── utils/ # 辅助工具
└── app.js # Express 设置
完整的用户 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:
每周安装量
380
代码仓库
GitHub 星标数
1
首次出现
2026 年 1 月 20 日
安全审计
已安装于
opencode320
gemini-cli317
codex309
github-copilot304
cursor269
amp260
Master building robust, scalable REST APIs with Express.js, the de-facto standard for Node.js web frameworks.
Build a basic Express API in 5 steps:
npm install expressconst 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'));
// 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;
// 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);
// 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 })
});
});
/api/v1/, /api/v2/){
"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 }
}
200 OK - Successful GET/PUT201 Created - Successful POST204 No Content - Successful DELETE400 Bad Request - Validation error401 Unauthorized - Auth required403 Forbidden - No permission404 Not Found - Resource not found500 Internal Error - Server errorsrc/
├── controllers/ # Route handlers
├── routes/ # Route definitions
├── middlewares/ # Custom middleware
├── models/ # Data models
├── services/ # Business logic
├── utils/ # Helpers
└── app.js # Express setup
Complete user 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;
Use Express REST API when:
Weekly Installs
380
Repository
GitHub Stars
1
First Seen
Jan 20, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
opencode320
gemini-cli317
codex309
github-copilot304
cursor269
amp260
agent-browser 浏览器自动化工具 - Vercel Labs 命令行网页操作与测试
140,500 周安装