SuperAPI AI 工具集

umbraco-openapi-client

编程与开发

查看项目

更新于 10-15 21:05

技能介绍

用途:在 Umbraco 后台(backoffice)中调用自定义 C# API 时,配置带认证的 OpenAPI 客户端。核心前提是:不要用原始 fetch() 调用后台 API,否则会因缺少 bearer token 返回 401;应使用生成的 OpenAPI 客户端并结合 Umbraco 认证上下文。适建包含 [BackOfficeRoute] 的自定义控制器、树、工作区等需从自定义端点取数的 UI。

主要能力:正确 bearer token 认证、类型安全 API 调用、自动令牌刷新;客户端由 @hey-api/openapi-ts 依据 swagger.json 生成,含 types.gen.ts、sdk.gen.ts、client.gen.ts、index.ts。

必要用法(分四部分):一、C# 后端注册后台 OpenAPI 文档。Umbraco 18+ 改用 fluent 的 AddBackOfficeOpenApiDocument(...),旧的 SwaggerGenOptions 方式不再编译;文档服务在 /umbraco/openapi/{ApiName}.json。二、Client/package.json 添加 devDependencies:@hey-api/openapi-ts、chalk、node-fetch,并加 generate-client 脚本指向该 JSON。三、创建 Client/scripts/generate-openapi.js,用 node-fetch 拉取规格,调用 createClient 输出到 src/api,插件含 @hey-api/client-fetch(bundle、exportFromIndex、throwOnError)、@hey-api/typescript(enums 为 typescript)、@hey-api/sdk(asClass)。四、入口配置(关键):在 src/entrypoints/entrypoint.ts 中 consumeContext(UMB_AUTH_CONTEXT) 后调用 authContext.configureClient(client),它会设置 baseUrl/credentials/bearer token 并绑定默认拦截器(401 重试、problem-details 错误通知),且防重复配置。若需完全自定义可改用 authContext.getOpenApiConfiguration() 手动 setConfig,但会失去 401 重试与错误处理。之后运行 npm run generate-client,用生成的 Service 方法调用,客户端自动处理认证。

限制与提示:生成前需先启动 Umbraco 使 swagger.json 可访问;生成的 src/api 文件不要手动编辑;仅用 credentials 的 fetch 对管理 API 无效。官方站具体收费、价格、平台与效果资料暂未提供。