本文档非官方出品,主要由 AI 辅助编写,不保证绝对准确。如有疑问,请以 kernel/api/bazaar.go 中的源码为准。

如果您觉得本文档有帮助,可以考虑赞助支持:爱发电

uninstallBazaarPlugin

卸载指定的插件。

新手提示: 这个 API 就是你在思源插件管理界面点击"卸载"按钮时背后执行的操作。

🚨🚨🚨 极度严重警告:代码和文件删除操作! 🚨🚨🚨

除非你 100% 清楚后果,否则绝对不要执行此操作!

注意: 此 API 需要认证、管理员权限且非只读模式。

地址

POST /api/bazaar/uninstallBazaarPlugin

请求体 (JSON)

{
  "packageName": "要卸载的插件名称",
  "frontend": "适用的前端 (如 desktop)",
  "keyword": "可选的关键词"
}

响应体 (JSON)

卸载请求成功后,返回标准响应体,`data` 字段包含刷新后的集市插件列表。

{
  "code": 0, // 0 表示卸载成功
  "msg": "", // 成功时为空,失败时包含错误信息
  "data": {
    "packages": [
      // 卸载后刷新得到的 *所有* 集市可用插件列表 (针对指定 frontend 和 keyword)...
      // (结构同 getBazaarPlugin 返回的 packages)
    ]
  }
}

注意:

示例

// 假设要卸载名为 "sample-plugin" 的插件
const pkgName = "sample-plugin";
const targetFrontend = "desktop";

// **!!! 核警告:执行此代码会实际删除插件代码和文件 !!!**
// **!!! 请确保你理解全部风险并已备份数据 !!!**

// 示例:添加多重确认
if (prompt(`风险操作确认:请输入要卸载的插件名称 "${pkgName}" 以继续。`) === pkgName) {
  if (confirm(`【最终警告】即将永久删除插件 "${pkgName}" 的所有文件!\n\n确定吗?此操作无法撤销!`)) {
    fetch('/api/bazaar/uninstallBazaarPlugin', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Token YOUR_API_TOKEN' // 替换为你的管理员 API Token
      },
      body: JSON.stringify({
        packageName: pkgName,
        frontend: targetFrontend,
        keyword: ""
      })
    })
    .then(response => response.json())
    .then(data => {
      if (data.code === 0) {
        console.log(`插件 "${pkgName}" 卸载成功。`);
        // 可能需要提示用户重启思源
      } else {
        console.error(`插件 "${pkgName}" 卸载失败:`, data.msg);
      }
    })
    .catch(error => console.error('请求错误:', error));
  } else {
    console.log('取消卸载操作。');
  }
} else {
  console.log('插件名称输入错误或取消卸载操作。');
}

在线测试

你需要先通过 getInstalledPlugin 获取到一个已安装插件的 packageName 才能测试此接口。

☢️☢️☢️ 核武器级别危险:删除代码和文件! ☢️☢️☢️ 在此测试会实际永久删除你本地的插件文件夹!请反复核对插件名称除非你完全理解并接受所有潜在的数据丢失和系统风险,否则切勿点击发送按钮!

实际应用案例 / Who Uses This API?

如果你的外部工具使用了这个 API 来管理插件卸载,欢迎提交 Pull Request 将你的项目添加到下方列表!