KnowSphere 主题 API 速览

三种访问方式

使用场景方式身份
Thymeleaf 服务端渲染knowSphereFinder继承当前请求身份
公开展示、内容预览/apis/api.knowsphere.webjing.com/v1alpha1按端点规则可匿名
我的订单、钱包、签到及建单/apis/uc.api.knowsphere.webjing.com/v1alpha1当前登录用户

控制台接口和 Extension CRUD 不用于匿名主题。不能将管理员 Token 或支付密钥写入主题脚本。

Finder 返回形状

<th:block th:with="info=${knowSphereFinder.getPluginInfo()}"></th:block>
<th:block th:with="member=${knowSphereFinder.getMembershipStatus().block()}"></th:block>
<th:block th:with="plans=${knowSphereFinder.listMembershipPlans().collectList().block()}"></th:block>
<th:block th:with="orders=${knowSphereFinder.listMyOrders(1, 10).block()}">
  <article th:if="${orders != null}" th:each="order : ${orders.items}">
    <span th:text="${order.orderNo}"></span>
  </article>
</th:block>

接口方法与字段以 Finder 参考 为准。用户标识、资源名称和 slug 不是同一个值。

浏览器请求

async function loadMyOrders() {
  const response = await fetch(
    '/apis/uc.api.knowsphere.webjing.com/v1alpha1/orders?page=1&size=10',
    { credentials: 'same-origin', headers: { Accept: 'application/json' } }
  );
  if (response.status === 401) return { state: 'login-required' };
  if (response.status === 403) return { state: 'forbidden' };
  if (response.redirected || !response.headers.get('content-type')?.includes('json')) {
    throw new Error('需要登录或接口未返回 JSON');
  }
  if (!response.ok) throw new Error(`读取失败:${response.status}`);
  return { state: 'ready', data: await response.json() };
}

公开访问检查使用 GET /access/-/check?type=post&name=<metadata.name>,不是旧示例里的 /apis/api.webjing.com/...。预览使用 GET /paywall/-/target-preview。请求参数应用 URLSearchParams 编码。

评论访问凭证不能靠邮箱补签;应使用插件评论组件,凭证由实际成功创建评论的响应绑定到当前浏览器。

完整 HTTP 合同与权限 · 支付部署