跳到主要内容

使用指南

服务管理

创建服务

通过 AnyService 控制台创建服务,需要配置以下基本信息:

基本配置

配置项说明要求
服务名称服务的显示名称便于识别和管理
服务标识服务的唯一标识符仅支持英文、数字、下划线,环境内唯一
备注服务描述信息可选,用于记录服务用途
源站类型后端服务的接入方式公网访问源站 或 腾讯云资源

公网访问源站配置

当选择通过公网访问源站时,需要配置:

配置项说明示例
源站协议HTTP 或 HTTPS默认端口:HTTP(80)、HTTPS(443)
源站连接信息IP 地址或域名139.186.239.126tcb.tencentcloudapi.com:8080

alt

腾讯云资源配置

当选择对接腾讯云资源时,需要配置:

配置项说明支持范围
对应资源选择具体的云资源实例上海区的 CVM、CLB、Lighthouse
端口服务监听端口1-65535

alt

安全配置(可选)

配置项说明注意事项
源站访问凭证Basic Auth 认证信息遵循 Authorization Basic 规范

工作原理:配置后,每次请求会在 Header 中添加 x-anyservice-authorization 字段,源站可用于身份验证或请求来源识别。

⚠️ 安全提示:使用 HTTP 协议时,访问凭证将以明文传输,建议生产环境使用 HTTPS。

管理服务

在服务列表中可以查看和管理已创建的服务:

操作说明注意事项
查看详情查看服务的配置信息和运行状态-
编辑服务修改除标识外的所有配置服务标识不可修改
删除服务彻底删除服务及其配置删除前请确保无代码依赖

⚠️ 重要提示:服务的修改和删除操作可能影响正在使用该服务的应用,请在操作前谨慎评估影响范围。

服务调用

在小程序中调用

1. 初始化云开发环境

在小程序加载阶段调用一次初始化,全局执行一次即可:

// app.js - 全局初始化
App({
async onLaunch() {
// 初始化云开发环境
wx.cloud.init({
env: "your-env-id" // 替换为您的环境 ID
})
}
})

2. 调用 AnyService 服务

使用 wx.cloud.callContainer 方法调用 AnyService 服务:

// 调用示例
const callAnyService = async () => {
try {
const res = await wx.cloud.callContainer({
path: '/api/users', // 后端 API 路径
method: 'POST', // HTTP 方法
header: {
"X-WX-SERVICE": "tcbanyservice", // 固定值
"X-AnyService-Name": "my-service", // 您的服务标识
"Content-Type": "application/json"
},
data: {
name: '张三',
email: 'zhangsan@example.com'
}
// dataType: 'text' // 可选:不要 SDK 自动解析 JSON 时使用
})

console.log('调用成功:', res.data)
return res.data
} catch (error) {
console.error('调用失败:', error)
throw error
}
}

关键参数说明

参数说明
X-WX-SERVICEtcbanyservice固定值,标识调用 AnyService
X-AnyService-Name您的服务标识创建服务时设置的标识符
path/api/path后端 API 路径,从根目录开始
methodGET/POST/PUT/DELETEHTTP 请求方法
dataTypejson(默认)/text响应数据解析方式

错误处理与最佳实践

常见错误处理

const callAnyService = async (path, data = {}) => {
try {
const res = await wx.cloud.callContainer({
path,
method: 'POST',
header: {
"X-WX-SERVICE": "tcbanyservice",
"X-AnyService-Name": "my-service",
"Content-Type": "application/json"
},
data,
timeout: 10000 // 设置超时时间
})

return res.data
} catch (error) {
// 处理不同类型的错误
if (error.errCode === -1) {
console.error('网络请求失败:', error.errMsg)
wx.showToast({ title: '网络连接失败', icon: 'none' })
} else if (error.errCode === 40001) {
console.error('服务未找到:', error.errMsg)
wx.showToast({ title: '服务暂不可用', icon: 'none' })
} else {
console.error('调用失败:', error)
wx.showToast({ title: '请求失败,请重试', icon: 'none' })
}
throw error
}
}

最佳实践建议

  1. 请求封装:建议将 AnyService 调用封装成通用函数
  2. 错误处理:为不同错误类型提供相应的用户提示
  3. 超时设置:为网络请求设置合理的超时时间
  4. 状态管理:在调用过程中显示加载状态
  5. 重试机制:对于临时性错误可以实现重试逻辑

📝 提示:其他参数均与 wx.request 保持一致。

请求与响应数据

请求 Header

通过 SDK 调用服务时,系统会自动在 HTTP Header 中携带小程序相关信息,后端可以通过解析这些 Header 获取用户和环境信息:

Header 字段含义说明
X-WX-OPENID小程序用户 openid用户唯一标识
X-WX-APPID小程序 AppID小程序应用标识
X-WX-UNIONID小程序用户 unionid跨应用用户标识(需满足获取条件)
X-WX-FROM-OPENID资源复用场景下的用户 openid资源复用时的原始用户标识
X-WX-FROM-APPID资源复用场景下的小程序 AppID资源复用时的原始应用标识
X-WX-FROM-UNIONID资源复用场景下的用户 unionid资源复用时的原始用户跨应用标识
X-WX-ENV云环境 ID当前调用所在的云开发环境
X-WX-SOURCE调用来源触发本次调用的来源类型
X-WX-PLATFORM调用平台发起调用的平台信息
X-Forwarded-For客户端 IP 地址支持 IPv4 和 IPv6
X-AnyService-NameAnyService 服务标识当前调用的服务标识符

响应 Header

AnyService 会在响应中添加以下 Header 字段,用于调试和监控:

Header 字段含义说明
X-Cloudbase-Request-Id云开发请求 ID用于问题追踪和日志查询
X-Cloudbase-Upstream-Status-Code源站响应状态码后端服务实际返回的 HTTP 状态码
X-Cloudbase-Upstream-Timecost源站响应耗时后端服务处理请求的时间(毫秒)
X-Cloudbase-Upstream-Type源站服务类型后端服务的类型标识