获取VS Code 扩展的版本更新的需求
因为企业内部有架设私有扩展管理器的要求,但是对于一些官方市场的插件,希望可以自动获取这些扩展的更新并上传至私有扩展管理器。于是就有了本篇介绍的需求: 通过API的方式获取VS Code 扩展的更新。
关于VS Code的私有扩展管理器可以参考:
VS Code 扩展之------私有扩展管理(Private Extension Manager)
获取VS Code 扩展的版本的方式
VS Code 的官方扩展市场的地址是: https://marketplace.visualstudio.com/。
每个插件的页面在 "Version History" 的标签也可以看到各个版本并且进行下载。
如何通过API获取这些版本信息并且下载最新版本呢? 使用网络爬虫去爬页面有是一种方法,但是VS Code提供了一个最便捷的方式, 就是其提供了一个https的接口:https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery
。
为了演示方便,这里使用 Postman 来呼叫这个接口, 以获取"Test Runner for Java" 的扩展的版本为例。
用 Postman 查询 Test Runner for Java 插件的版本信息,需要配置一个 POST 请求,包括设置必要的 Headers 和 Body。详细的步骤如下:
-
打开 Postman。
-
创建一个新的请求。
-
设置请求方法为 POST。
-
将 URL 设置为
https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery
。
5.** 在 Headers 部分添加如下信息:**Content-Type: application/json Accept: application/json;api-version=6.0-preview.1
注意: 这里一定要将Accept设置为正确,否则调用的时候会出现下面的 No api-version was supplied for the \"POST\" request
错误。
-
在 Body 部分,选择
raw
并设置类型为JSON
。 -
输入请求体(需要使用Test Runner for Java的插件发布者和插件标识符):
json
{
"filters": [
{
"criteria": [
{ "filterType": 7, "value": "vscjava.vscode-java-test" }
]
}
],
"flags": 103
}
请注意
vscjava.vscode-java-test
是插件的 ID。filterType
设为 7 表示我们按照扩展的唯一标识符来过滤结果flags
值为 103 是请求返回包括版本信息、资产详情等在内的一系列详细信息的标志位。
- 点击发送(Send)按钮。
Postman 将会发送一个 POST 请求到 Visual Studio Marketplace 的扩展查询 API,并会显示查询结果。在响应体中看到包含 Test Runner for Java 插件的详细信息的 JSON,其中就包含了版本号信息。
正确返回的结果如下:
错误解决之 No api-version was supplied for the "POST" request
{
"$id": "1",
"innerException": null,
"message": "No api-version was supplied for the \"POST\" request. The version must be supplied either as part of the Accept header (e.g. \"application/json; api-version=1.0\") or as a query parameter (e.g. \"?api-version=1.0\").",
"typeName": "Microsoft.VisualStudio.Services.WebApi.VssVersionNotSpecifiedException, Microsoft.VisualStudio.Services.WebApi",
"typeKey": "VssVersionNotSpecifiedException",
"errorCode": 0,
"eventId": 3000
}