添加HTTP端点Skill add-endpoint

这是一个关于如何为Catalyst-Relay服务器添加新HTTP端点的技能指南。它详细说明了创建路由、API端点、HTTP处理器的完整流程,包括文件结构、请求验证、响应格式、文档规范以及集成到现有框架的步骤。关键词:HTTP端点,API开发,后端路由,Hono框架,Zod验证,TypeScript,服务器开发,RESTful API,代码规范。

后端开发 0 次安装 0 次浏览 更新于 3/2/2026

名称:添加端点 描述:向 Catalyst-Relay 服务器添加新的 HTTP 端点。在创建路由、API 端点或 HTTP 处理器时使用。

添加 HTTP 端点

何时使用

  • 创建新的 HTTP 路由
  • 添加 API 端点
  • 将新的处理器连接到 Hono 应用

路由文件模式

每个端点都有其独立的文件,其中包含共置的模式、类型和处理器。

位置: src/server/routes/{类别}/{端点}.ts

// src/server/routes/auth/login.ts

import { z } from 'zod';
import type { Context } from 'hono';
import type { ISessionManager } from '../types';

// 1. 请求模式(共置)
export const loginRequestSchema = z.object({
    url: z.string().url(),
    client: z.string().min(1).max(3),
    auth: authConfigSchema
});

// 2. 响应类型(共置)
export interface LoginResponse {
    sessionId: string;
    username: string;
    expiresAt: number;
}

// 3. 单个处理器导出(工厂模式)
export function loginHandler(sessionManager: ISessionManager) {
    return async (c: Context) => {
        const body = await c.req.json();
        const validation = loginRequestSchema.safeParse(body);

        if (!validation.success) {
            return c.json({
                success: false as const,
                error: '无效请求',
                code: 'VALIDATION_ERROR'
            }, 400);
        }

        // ... 实现 ...

        return c.json({ success: true as const, data: response });
    };
}

连接路由

src/server/routes/index.ts 中注册路由:

import { loginHandler } from './auth/login';

export function registerRoutes(app: Hono, sessionManager: ISessionManager) {
    // 认证路由
    app.post('/login', loginHandler(sessionManager));

    // 在此添加您的新路由
}

响应格式

所有端点都使用一致的封装格式:

// 成功
return c.json({ success: true as const, data: result });

// 错误
return c.json({
    success: false as const,
    error: '人类可读的消息',
    code: '机器代码'
}, statusCode);

对判别联合中的字面量类型使用 as const

库模式映射

如果端点封装了核心功能,请向 ADTClient 添加一个方法:

HTTP 端点 库方法
POST /login client.login()
GET /packages client.getPackages()
POST /objects/read client.read(objects)

文档要求

docs/endpoints/{类别}.md 中创建端点文档。

必需的结构:

  1. 标题和描述
  2. ## 章节 带锚链接的目录
  3. 每个端点:
    • 描述段落
    • 请求表(方法、路径、是否需要认证)
    • 请求体表(字段、类型、是否必需、描述)
    • 响应表(字段、类型、描述)
    • 示例请求/响应 JSON
    • 错误代码表
    • 用例列表
    • 库使用部分

完整示例请参见 docs/endpoints/auth.md

检查清单

- [ ] 在 src/server/routes/{类别}/ 中创建路由文件
- [ ] 为请求验证添加 Zod 模式
- [ ] 添加响应类型接口
- [ ] 导出处理器函数(工厂模式)
- [ ] 在 src/server/routes/index.ts 中连接路由
- [ ] 如果适用,向 ADTClient 添加库方法
- [ ] 在 docs/endpoints/{类别}.md 中记录
- [ ] 运行类型检查:bun run typecheck