mcpField
E
express

express

github.com/partme-ai开发716104 次安装3 周前更新
代码仓库

关于 express

面向 Node.js 开发者的 Express 技能,用于构建 HTTP 服务和 REST API。内容涵盖路由、中间件、请求校验、错误处理、安全响应头及生产部署实践。

主要功能

  1. 01Express 应用与中间件配置
  2. 02路由和路由器组织
  3. 03异步错误处理
  4. 04CORS 与安全响应头
  5. 05REST API 校验与响应

适用场景

  1. 01创建 Node.js HTTP 服务
  2. 02用路由器组织 REST API 端点
  3. 03处理异步路由处理器的异常
  4. 04为生产环境准备 Express 应用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/partme-ai/full-stack-skills --skill express

安装后在 Claude Code 中输入/express确认已加载。

附带文件LICENSE.txt

详细介绍

何时使用此技能

当用户想要进行以下操作时,使用此技能:

  • 使用 Express 路由和中间件构建 Node.js HTTP 服务
  • 配置 CORS、请求体解析、错误处理和静态文件
  • 创建包含请求验证和响应格式化的 REST API
  • 搭建具备生产环境所需安全头的 Express 应用

如何使用此技能

工作流
  1. 创建应用 — 实例化 Express 并配置中间件
  2. 定义路由 — 为每个端点设置路由处理程序
  3. 添加错误处理 — 实现错误中间件,确保响应一致
  4. 部署 — 在反向代理后通过 HTTPS 运行
快速入门示例
const express = require('express');
const cors = require('cors');
const helmet = require('helmet');

const app = express();

// Middleware
app.use(helmet());
app.use(cors());
app.use(express.json());

// Routes
app.get('/api/items', async (req, res, next) => {
  try {
    const items = await Item.findAll();
    res.json({ items });
  } catch (err) {
    next(err);
  }
});

app.post('/api/items', async (req, res, next) => {
  try {
    const { name, price } = req.body;
    const item = await Item.create({ name, price });
    res.status(201).json(item);
  } catch (err) {
    next(err);
  }
});

// 404 handler
app.use((req, res) => {
  res.status(404).json({ error: 'Not found' });
});

// Error middleware (must have 4 params)
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(err.status || 500).json({
    error: err.message || 'Internal server error',
  });
});

app.listen(3000, () => console.log('Server running on port 3000'));
异步错误包装器
// Wrap async handlers to catch rejected promises
const asyncHandler = (fn) => (req, res, next) =>
  Promise.resolve(fn(req, res, next)).catch(next);

app.get('/api/users', asyncHandler(async (req, res) => {
  const users = await User.findAll();
  res.json(users);
}));
Router 示例
// routes/items.js
const router = require('express').Router();

router.get('/', asyncHandler(async (req, res) => { /* ... */ }));
router.post('/', asyncHandler(async (req, res) => { /* ... */ }));
router.get('/:id', asyncHandler(async (req, res) => { /* ... */ }));

module.exports = router;

// app.js
app.use('/api/items', require('./routes/items'));

最佳实践

  • 将路由和中间件拆分到不同模块中;使用 express.Router() 进行组织
  • 始终使用 try/catch 或包装器包装异步处理程序,以避免未处理的拒绝
  • 使用 helmet 设置安全头,并针对生产环境的来源配置 CORS
  • 在生产环境中通过 HTTPS 部署在反向代理(nginx)后
  • 使用 morgan 记录请求日志,并返回结构化错误响应

参考资料

关键词

express、Node.js、中间件、路由、REST API、错误处理、异步、helmet、cors

评论

支持 Markdown