用途
add-endpoint 是 Activepieces 项目中的一个技能,适用于需要新增 API 端点、路由或 HTTP 处理器的场景。根据描述,它在新增 Fastify 控制器端点时应始终被使用。
主要能力
该技能提供了一套新增端点的标准步骤与代码模式,涵盖以下环节:
- 读取参考模式:打开 packages/server/api/src/app/tables/table/table.controller.ts 作为参考。
- 使用 FastifyPluginAsyncZod 创建或更新控制器。
- 在控制器之后(而非内联)定义路由配置,包含 config 与 schema 两部分。
- 选择安全访问方式。
- 创建模块并在 app.ts 中注册。
- 如涉及新权限,在 @activepieces/shared 中新增 Permission。
- 使用 npm run lint-dev 进行验证。
使用方式
第一步:读取参考模式
打开 packages/server/api/src/app/tables/table/table.controller.ts 作为参考。
第二步:创建或更新控制器
使用 FastifyPluginAsyncZod:
export const myController: FastifyPluginAsyncZod = async (fastify) => { fastify.post('/', CreateRequest, async (request) => { return myService(request.log).create({ projectId: request.projectId, request: request.body, }) }) }
第三步:在控制器之后定义路由配置
const CreateRequest = { config: { security: securityAccess.project( [PrincipalType.USER, PrincipalType.ENGINE, PrincipalType.SERVICE], Permission.WRITE_MY_FEATURE, { type: ProjectResourceType.BODY }, ), }, schema: { tags: ['my-feature'], body: CreateMyFeatureRequest, // Zod schema from @activepieces/shared response: { [StatusCodes.CREATED]: MyFeature }, }, }
第四步:选择安全访问方式
- securityAccess.project(principals, permission, { type: ProjectResourceType.X }) — 项目范围
- securityAccess.platformAdminOnly(principals) — 仅管理员
- securityAccess.publicPlatform(principals) — 任意平台成员
- securityAccess.public() — 无鉴权
第五步:创建模块并在 app.ts 中注册
export const myModule: FastifyPluginAsyncZod = async (app) => { app.addHook('preSerialization', entitiesMustBeOwnedByCurrentProject) await app.register(myController, { prefix: '/v1/my-features' }) }
第六步:新增权限(如需要)
在 @activepieces/shared 的 Permission 枚举中新增。
第七步:验证
npm run lint-dev
适用场景
该技能面向 Activepieces 后端 API 开发,适用于需要新增 Fastify 控制器端点的开发任务,包括新增路由、HTTP 处理器以及相应的权限配置与模块注册。
限制
资料中未提供关于该技能的平台限制、收费、价格、效果或性能等信息,相关内容暂未提供。