HTTP 调用
开发者工具提供了命令行与 HTTP 服务两种接口供外部调用,开发者可以通过命令行或 HTTP 请求指示工具进行登录、预览、上传等操作。
# HTTP V2
升级说明:自 1.02.202003092
开始,CLI & HTTP 接口升级 v2
版本,在 v2
版本中,旧版命令仍然可以使用,但已废弃并会在未来移除,请使用 v2 命令。v2 版本增加了云开发管理操作支持、优化命令形式、增加细致状态提示、支持长时间命令执行、支持国际化(中英文选择)等。
http 服务在工具启动后自动开启,HTTP 服务端口号在用户目录下记录,可通过检查用户目录、检查用户目录下是否有端口文件及尝试连接来判断工具是否安装/启动。
端口号文件位置:
macOS : ~/Library/Application Support/微信开发者工具/<MD5>/Default/.ide
Windows : ~/AppData/Local/微信开发者工具/User Data/<MD5>/Default/.ide
注: MD5 的计算规则:MD5(`${installPath}${nwVersion}`)
macOS: installPath == "/Applications/wechatwebdevtools.app/Contents/MacOS", nwVersion == '';
Windoes: installPath == '微信开发者工具.exe 所在的路径', nwVersion 是 installPath 目录下有一个 version 文件(JSON 格式)中 latestNw 的值
# 接口索引
所有接口的 URL 路径前缀都需 /v2
# 通用项目选项
通用 URL 参数
# 接口文档
# 登录工具
接口定义:
Path:/v2/login
HTTP 方法:GET
示例:
# 登录,返回图片格式的二维码
http://127.0.0.1:端口号/v2/login
# 登录,取 base64 格式二维码
http://127.0.0.1:端口号/v2/login?qr-format=base64
# 登录,取 base64 格式二维码,并写入 /Users/username/logincode.txt
http://127.0.0.1:端口号/v2/login?qr-format=base64&qr-output=%2FUsers%2Fusername%2Flogincode.txt
# 登录,并写入登录结果到 /Users/username/loginresult.json
http://127.0.0.1:端口号/v2/login?result-output=%2FUsers%2Fusername%2Floginresult.json
# 是否已经登录工具
接口定义:
Path:/v2/islogin
HTTP 方法:GET
示例
http://127.0.0.1:端口号/v2/islogin
# 预览
接口定义:
URL:/v2/preview
HTTP 方法:GET
示例:
# 预览路径为 /Users/username/demo 的项目,返回图片格式的二维码
http://127.0.0.1:端口号/v2/preview?project=%2FUsers%2Fusername%2Fdemo
# 预览路径为 /Users/username/demo 的项目,返回 base64 格式的二维码
http://127.0.0.1:端口号/v2/preview?project=%2FUsers%2Fusername%2Fdemo&qr-format=base64
# 预览路径为 /Users/username/demo 的项目,返回 base64 格式的二维码,并写入 /Users/username/logincode.txt
http://127.0.0.1:端口号/v2/preview?project=%2FUsers%2Fusername%2Fdemo&qr-format=base64&qr-output=%2FUsers%2Fusername%2Flogincode.txt
# 预览路径为 /Users/username/demo 的项目,返回图片格式的二维码,并将预览信息输出至 /Users/username/info.json
http://127.0.0.1:端口号/v2/preview?project=%2FUsers%2Fusername%2Fdemo&info-output=%2Users%2username%2info.json
# 预览路径为 /Users/username/demo 的项目,指定自定义编译条件,启动页为 pages/index/index,参数为 x=1&y=2
http://127.0.0.1:端口号/v2/preview?project=%2FUsers%2Fusername%2Fdemo&compile-condition={"pathName":"pages/index/index","query":"a3=1"}
# 上传代码
接口定义:
URL:/v2/upload
HTTP 方法:GET
示例:
# 上传路径为 /Users/username/demo 的项目,指定版本号为 v1.0.0
http://127.0.0.1:端口号/v2/upload?project=%2FUsers%2Fusername%2Fdemo&version=v1.0.0
# 上传路径为 /Users/username/demo 的项目,指定版本号为 v1.0.0,并带上备注
http://127.0.0.1:端口号/v2/upload?project=%2FUsers%2Fusername%2Fdemo&version=v1.0.0&desc=test
# 上传路径为 /Users/username/demo 的项目,指定版本号为 v1.0.0,并将上传信息输出至 /Users/username/info.json
http://127.0.0.1:端口号/v2/upload?project=%2FUsers%2Fusername%2Fdemo&version=v1.0.0&info-output=%2Users%2username%2info.json
# 自动预览
接口定义:
URL:/autopreview
HTTP 方法:GET
示例:
# 自动预览路径为 /Users/username/demo 的项目,返回图片格式的二维码,并将预览信息输出至 /Users/username/info.json
http://127.0.0.1:端口号/v2/autopreview?project=%2FUsers%2Fusername%2Fdemo&info-output=%2Users%2username%2info.json
# 构建 npm
接口定义:
URL:/buildnpm
HTTP 方法:GET
示例:
# 构建路径为 /Users/username/demo 的项目
http://127.0.0.1:端口号/v2/buildnpm?project=%2FUsers%2Fusername%2Fdemo&compile-type=miniprogram
# 启动工具
接口定义:
URL: /open
HTTP 方法: GET
示例:
# 打开工具
http://127.0.0.1:端口号/v2/open
# 打开/刷新项目
http://127.0.0.1:端口号/v2/open?project=项目全路径
注意:
- 项目路径中必须含正确格式的 project.config.json 且其中有 appid 和 projectname 字段。
- 项目路径需经 URL encode
# 关闭项目窗口
接口定义:
URL:/close
HTTP 方法:GET
示例
http://127.0.0.1:端口号/v2/close?project=%2FUsers%2Fusername%2Fdemo
注:关闭项目时,会有弹窗提示是否阻止;如未阻止,将在 3 秒后关闭
# 关闭工具
接口定义:
URL:/quit
HTTP 方法:GET
示例
http://127.0.0.1:端口号/v2/quit
注:关闭开发者工具时,会有弹窗提示是否阻止;如未阻止,将在 3 秒后关闭
# 重建文件监听
重置工具内部文件缓存,重新监听项目文件。
URL: /resetfileutils
HTTP 方法:GET
示例
http://127.0.0.1:端口号/v2/resetfileutils?project=%2FUsers%2Fusername%2Fdemo
# 清除工具缓存
接口定义:
URL:/cleancache
HTTP 方法:GET
示例
http://127.0.0.1:端口号/v2/cleancache?clean%3Dstorage%26project%3D%2FUsers%2Fxxx%2Fminiprogram-10
# 云开发操作
在云开发命令中,除非特殊说明,均可通过指定 project
选项或 appid
(如果是第三方平台则还加上 ext-appid
)两者二选一的方式进行指定项目。
# 查看云环境列表
GET /v2/cloud/env/list
示例:
# 通过 project 查看
http://127.0.0.1:端口号/v2/cloud/env/list?project=%2FUsers%2Fusername%2Fdemo
# 通过 appid 查看
http://127.0.0.1:端口号/v2/cloud/env/list?appid=wx1111111111111
# 查看云函数列表
GET /v2/cloud/functions/list
示例:
# 通过 --project 查看环境 test-123 下的线上云函数
http://127.0.0.1:端口号/v2/cloud/?env=test-123&project=%2FUsers%2Fusername%2Fdemo
# 通过 --appid 查看环境 test-123 下的线上云函数
http://127.0.0.1:端口号/v2/cloud/?env=test-123&appid=wx1111111111111
# 查看云函数信息
GET /v2/cloud/functions/info
示例:
# 通过 --project 查看环境 test-123 下的云函数 aaa, bbb 的信息
http://127.0.0.1:端口号/v2/cloud/functions/info?env=test-123&names=aaa,bbb&project=%2FUsers%2Fusername%2Fdemo
# 通过 --appid 查看环境 test-123 下的云函数 aaa, bbb 的信息
http://127.0.0.1:端口号/v2/cloud/functions/list?env=test-123&names=aaa,bbb&appid=wx1111111111111
# 上传云函数
GET /v2/cloud/functions/deploy
示例:
# 上传云函数根目录下名为 func_a, func_b 的两个云函数至云环境 ENVID,开启云端安装依赖
http://127.0.0.1:端口号/v2/cloud/functions/deploy?env=ENVID&remote-npm-install&names=func_a,func_b&project=%2Faaa%2Fbbb%2Fccc
# 指定绝对路径目录上传,开启云端安装依赖
http://127.0.0.1:端口号/v2/cloud/functions/deploy?env=ENVID&remote-npm-install&paths=%2Fa%2Fb%2Ffunc_a,%2Fx%2Fy%2Ffunc_b&appid=APPID
# 增量上传云函数
GET /v2/cloud/functions/inc-deploy
示例:
# 增量上传,指定云函数名
http://127.0.0.1:端口号/v2/cloud/functions/inc-deploy?env=ENVID&name=func_a&file=index.js&project=%2Faaa%2Fbbb%2Fccc
# 增量上传,指定云函数路径
http://127.0.0.1:端口号/v2/cloud/functions/inc-deploy?env=ENVID&path=%2Faaa%2Ffunc_a&file=index.js&appid=APPID
# 下载云函数
GET /v2/cloud/functions/download
示例:
# 下载云函数 func_a 至 /xxx/yyy 目录
http://127.0.0.1:端口号/v2/cloud/functions/download?env=ENVID&name=func_a&path=%2Fxxx%2Fyyy&appid=APPID