先总结:
- 环境id要填线上环境id。
- X-WX-SERVICE要填weixin cloudbase containers里的要调用的容器名称
- callContainer请求服务时,如果第一次请求服务报错了比如404之类的错误,接着用callContainer请求同一个接口,callContainer不会发起请求,而是给小程序前端直接返回 INVALID_PATH 的错误码和serviceName not exit的错误消息。在callContainer里加上apiVersion:2 的参数可以规避2次及以上的重复调用直接报INVALID_PATH的问题
官方文档 https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/guide/debug/
昨天callcontainer调本地的docker服务时,一直有问题调不通。最后排查出问题:
1.官方文档只提到X-WX-SERVICE要与容器名相同,一开始试了wx-cloudbase里的容器名称,发现有问题,一直报INVALID-PATH,envdbid无效,以为是X-WX-SERVICE填错了。
后面改成docker ps 里names的名字,还是报错
于是还想是不是环境id有问题。试了各种环境id等。
今天从官方微信群得知环境id是要填 云托管里的 线上环境id的,于是后试了下X-WX-SERVICE用wx-cloudbase的容器名称,这次发现第一次callcontainer调用本地容器日志显示是接受到请求的,但是后面又没有请求记录了。感觉这里面有问题。重新加载模拟器,又复现了问题。原来是callcontainer请求的接口,服务报了错误后,继续调用同一个接口时,callcontainer不会再向服务发送请求了,而是直接给小程序报”INVALID_PATH“的错误码,也是这个原因让我一直以为是X-WX-SERVICE填错了。
后面把参数改正确,就可以正常调用了