@be-link/vitality-cli-nodejs
v0.0.8
Published
VitalityService Node.js 客户端
Readme
@be-link/vitality-cli-nodejs
VitalityService 的 Node.js SDK,用法与 @be-link/cs-cli-nodejs 一致。
调用方式(与商品 SDK 相同)
import {
frontendConfigService,
bannerWebService,
supplierShuttleBusService,
bizService,
coreTokenService,
} from '@be-link/vitality-cli-nodejs'
// 直接调方法,不是 .call({ func })
const migrationRouteConfig = await frontendConfigService.getMigrationRouteConfig()
await coreTokenService.getMiniAppVitalityToken({})
await bannerWebService.queryBannerList({})
await supplierShuttleBusService.queryShuttleBusList({ pageIndex: 0, pageSize: 20 })
// 或命名空间聚合
await bizService.banner.web.queryBannerList({})
await bizService.supplier.shuttleBus.queryShuttleBusList({ pageIndex: 0, pageSize: 20 })
await bizService.activity.venue.queryUserTaskRecords({ unionId: 'union-id' })
await bizService.activity.springAct.queryBranchVenue()
await bizService.core.config.get('CONFIG_KEY')
await bizService.core.token.batchRefreshEcommerceAccessToken([
{ appId: 'mini-app-id', secret: 'mini-app-secret' },
])Core 按 9 个 service 聚合,冻结公开 38 个方法。Activity 按 11 个 service 聚合,冻结公开 72 个方法;transport 支持范围扩大不会自动把 manifest 中此前排除的接口加入 SDK。
Activity
Activity 按 main、venue、doubleEleven、anniversary、wxLive、springAct、schoolAct、marketingAct、inviteFission、desire、job 聚合,共公开 72 个单对象参数或无参方法。
单个 object、根数组、string、number、boolean 或 null 参数都可由 SCF transport 完整表达。两个及以上业务位置参数仍无法迁移,因为 envelope 只能恢复一个 param;这类接口必须先由服务端提供单对象 adapter。服务端未注册的方法、已有 route/server 排除项和进程内 helper 不会因 transport 支持 primitive/数组而提前导出,完整冻结清单可查看 activitySdkManifest。
履约/订单服务调商品服务:
import { itemQueryService } from '@be-link/cs-cli-nodejs'
await itemQueryService.byItem.queryItemSearchInfo({ itemIds: [...] })调 VitalityService 同理:
import { coreTokenService } from '@be-link/vitality-cli-nodejs'
await coreTokenService.getMiniAppVitalityToken({})目录约定(对齐 cs-cli)
src/vs/modules/biz/{module}/{service}/service.ts # 一个 Service 类 + 单例 export
src/vs/modules/biz/{module}/type.ts # 模块共享类型;也可按 service 拆 type.ts
src/vs/modules/api/{module}/{service}/service.ts # native API Service
src/vs/modules/api/index.ts # api 命名空间聚合
src/vs/modules/biz/index.ts # 命名空间聚合
src/index.ts # 对外 export 单例prefixUrl=/{pkg}/{module}/{service},如/biz/core/token- 路径最后一段保持原方法名,如
getMemberInfo→getMemberInfo /api/**原生 HTTP Service 使用callApi(this.getApiUrl(this.methodName), request):有参时参数直接作为 axios body,无参时 body 保持undefined,绝不自动出现__scfParam。/biz/**、/web/**云函数迁移 Service 使用callScfApi(this.getApiUrl(this.methodName), request):非undefined(包括null)编码为{ __scfParam: { present: true, value: request } },undefined/无参编码为{ __scfParam: { present: false } }。- transport 类型由 Service 显式选择,不根据参数形态或 URL 猜测。业务调用方不要自己调用 axios,也不要自己拼
__scfParam。 callApi与callScfApi复用同一底层请求,并同时识别旧云函数{ success, data, msg, errorCode }和 native{ success, data, message };success:false会抛BizError,raw/null 响应原样返回。frontendConfigService.getMigrationRouteConfig()只负责拉取服务端配置;缓存时长和失败降级由调用方服务决定。
迁移期兜底
尚未封装到 cli 的接口可用 vitalityInvokeService.call({ pkg, module, service, func, param }),新接口应优先补 Service 方法并发版,不要长期依赖 invoke。
命令
pnpm install
pnpm build环境
- 内网鉴权:
process.env.authorizationTokenInside(由调用方服务从 Shield 定时刷新) - 链路 ID:每次请求生成 UUID,与
@be-link/cs-cli-nodejs一致 - 非生产环境固定走测试公网;生产环境中 SCF 走生产公网,非 SCF 容器走生产内网
