mcpField
A
api-endpoint-scaffolder

api-endpoint-scaffolder

github.com/onewave-ai开发393302 次安装1 周前更新
代码仓库

关于 api-endpoint-scaffolder

用于在 Next.js、Express 等框架中搭建 API 端点的技能。它指导开发者确定 HTTP 方法、请求与响应类型,并提供输入验证、状态码和实现规范方面的建议。

主要功能

  1. 01选择框架和 HTTP 方法
  2. 02定义请求与响应类型
  3. 03提供 Next.js 和 Express 模板
  4. 04指导输入验证
  5. 05指导状态码和错误处理

适用场景

  1. 01搭建新的 API 路由
  2. 02添加请求验证
  3. 03统一端点响应格式
  4. 04使用 OpenAPI 或 Swagger 编写端点文档

安装

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

$npx skills add https://github.com/onewave-ai/claude-skills --skill api-endpoint-scaffolder

安装后在 Claude Code 中输入/api-endpoint-scaffolder确认已加载。

详细介绍

API 端点脚手架

说明

创建新的 API 端点时:

  1. 识别框架(Express、Next.js、FastAPI 等)
  2. 确定 HTTP 方法(GET、POST、PUT、PATCH、DELETE)
  3. 定义请求和响应类型
  4. 遵循最佳实践进行实现

模板

Next.js App Router(TypeScript)
// app/api/[resource]/route.ts
import { NextRequest, NextResponse } from 'next/server';
import { z } from 'zod';

const RequestSchema = z.object({
  // Define your schema
});

export async function GET(request: NextRequest) {
  try {
    const { searchParams } = new URL(request.url);
    // Implementation
    return NextResponse.json({ data }, { status: 200 });
  } catch (error) {
    console.error('[API] Error:', error);
    return NextResponse.json(
      { error: 'Internal server error' },
      { status: 500 }
    );
  }
}

export async function POST(request: NextRequest) {
  try {
    const body = await request.json();
    const validated = RequestSchema.parse(body);
    // Implementation
    return NextResponse.json({ data }, { status: 201 });
  } catch (error) {
    if (error instanceof z.ZodError) {
      return NextResponse.json(
        { error: 'Validation failed', details: error.errors },
        { status: 400 }
      );
    }
    return NextResponse.json(
      { error: 'Internal server error' },
      { status: 500 }
    );
  }
}
Express(TypeScript)
import { Router, Request, Response, NextFunction } from 'express';
import { z } from 'zod';

const router = Router();

const CreateSchema = z.object({
  // Define schema
});

router.post('/', async (req: Request, res: Response, next: NextFunction) => {
  try {
    const data = CreateSchema.parse(req.body);
    // Implementation
    res.status(201).json({ success: true, data });
  } catch (error) {
    next(error);
  }
});

export default router;

最佳实践

  1. 始终使用 Zod、Yup 或类似工具验证输入
  2. 使用合适的 HTTP 状态码:
    • 200:成功
    • 201:已创建
    • 400:错误请求
    • 401:未授权
    • 403:禁止访问
    • 404:未找到
    • 500:服务器错误
  3. 记录错误,但不要向客户端暴露内部信息
  4. 使用一致的响应格式
  5. 为公开端点添加速率限制
  6. 尽可能使用 OpenAPI/Swagger 编写文档

评论

支持 Markdown