用途:把 oRPC 路由器同时以 RPC 协议和标准 OpenAPI HTTP 两种方式暴露,本技能专注 OpenAPI 一侧,面向 oRPC v2。核心概念(builder、中间件、上下文、客户端)需加载 orpc 技能,契约优先工作流需加载 orpc-contract 技能。
主要能力: 路由:过程默认 POST,路径由路由器结构推导(planet.create 变为 POST /planet/create)。可用 openapi 元数据覆盖 method、path、successStatus、prefix、tags 等;路径参数在 path 中写 {id} 并在输入 schema 中定义同名必填字段,{+path} 支持含 / 的捕获段。也可通过副作用导入 '@orpc/openapi/extensions/route' 启用 .route 扩展直接路由。 输入输出映射:默认 compact 模式,路径参数与查询参数或请求体合并;inputStructure: 'detailed' 可接收 { params, query, headers, body },outputStructure: 'detailed' 可返回 { status?, headers?, body? }。查询与表单使用括号记法解码,支持重复键数组、[number] 索引、[key] 对象属性,但无法表示空对象/数组、根级数组或全数字键对象,值始终为字符串。可用 paramsStyles、queryStyles、requestBodyHint/responseBodyHint 覆盖解析。 服务端:从适配器子路径(如 @orpc/openapi/fetch、@orpc/openapi/node)导入 OpenAPIHandler,可与 RPCHandler 共存于不同前缀。查询/路径/表单值为字符串时,添加 SmartCoercionHandlerPlugin 做无损类型转换。 客户端:OpenAPILink 通过类型安全客户端调用 OpenAPI 形态的 oRPC API,需要 contract 或 router 类型;因序列化单向,Date 返回为字符串,可用 SmartCoercionLinkPlugin 恢复原生类型。 规范文档:OpenAPIGenerator 生成 OpenAPI 3.2 文档(可降级 3.1/3.0),OpenAPIReferenceHandlerPlugin 在 /spec.json 提供规范、在 / 提供 Scalar UI(可切换 Swagger)。
使用方式:安装并导入 @orpc/openapi 相关模块,按上述方式配置元数据、处理器与链接;完成后请求 /spec.json 和一个已路由端点,确认方法、路径与状态码。
适用场景:需要为 oRPC 项目提供 REST 风格接口、生成 OpenAPI 规范与交互式文档、或让客户端以类型安全方式调用 OpenAPI 服务。
限制:本技能为摘要,若与官方文档冲突以文档为准;v2 仍在演进,预训练的 v1 知识常不适用。详细内容需查阅 https://orpc.dev 的对应页面(可在 URL 后加 .md 获取源 markdown)。