You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Web应用与Fablo Rest API集成?缺失API URL该如何处理?

如何将Web应用与Fablo Rest API集成

1. 确定Fablo Rest API的访问URL

Fablo Rest API默认监听端口为3000,本地部署时基础URL通常为http://localhost:3000;如果部署在远程服务器,则替换为服务器公网IP,比如http://192.168.1.100:3000。若不确定具体地址,可通过以下方式验证:

  • 查看Fablo Rest API的启动日志,日志中会明确显示服务监听的host:port
  • 检查Fablo Rest API的.env配置文件,其中PORT字段定义了服务端口
  • 若用Docker部署,执行docker ps找到fablo-rest容器,查看端口映射(如0.0.0.0:3000->3000/tcp),映射的外部端口即为访问端口

2. 生成并配置授权令牌

调用API前必须携带有效的授权令牌,步骤如下:

  • 通过POST请求获取令牌(示例命令,参数需匹配你的Fablo用户配置):
    curl -X POST http://localhost:3000/api/auth/login \
    -H "Content-Type: application/json" \
    -d '{"username": "admin", "password": "adminpw"}'
    
  • 保存返回结果中的accessToken字段,后续所有API请求都需要在请求头中携带该令牌:
    const authToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."; // 替换为实际令牌
    

3. 使用Fetch API与链码交互

以下是Web应用中调用Fablo Rest API的实际示例,以asset-transfer-basic链码的查询和交易操作为例:

示例1:查询所有资产

async function fetchAllAssets() {
  const apiBaseUrl = "http://localhost:3000";
  const channelName = "mychannel";
  const chaincodeName = "asset-transfer-basic";

  try {
    const response = await fetch(
      `${apiBaseUrl}/api/channels/${channelName}/chaincodes/${chaincodeName}/queries/GetAllAssets`,
      {
        method: "GET",
        headers: {
          "Authorization": `Bearer ${authToken}`,
          "Content-Type": "application/json"
        }
      }
    );

    if (!response.ok) throw new Error(`请求失败: ${response.status}`);
    const assets = await response.json();
    console.log("资产列表:", assets);
    // 在这里将资产数据渲染到页面
  } catch (error) {
    console.error("查询资产出错:", error);
    // 处理错误提示,比如显示给用户
  }
}

示例2:创建新资产

async function createNewAsset(assetData) {
  const apiBaseUrl = "http://localhost:3000";
  const channelName = "mychannel";
  const chaincodeName = "asset-transfer-basic";

  try {
    const response = await fetch(
      `${apiBaseUrl}/api/channels/${channelName}/chaincodes/${chaincodeName}/transactions/CreateAsset`,
      {
        method: "POST",
        headers: {
          "Authorization": `Bearer ${authToken}`,
          "Content-Type": "application/json"
        },
        body: JSON.stringify({
          args: [
            assetData.id,
            assetData.color,
            assetData.size.toString(),
            assetData.owner,
            assetData.appraisedValue.toString()
          ]
        })
      }
    );

    if (!response.ok) throw new Error(`创建失败: ${response.status}`);
    const result = await response.json();
    console.log("资产创建成功:", result);
    // 创建成功后刷新资产列表或提示用户
  } catch (error) {
    console.error("创建资产出错:", error);
  }
}

4. 日常维护要点

  • 令牌过期处理:由于授权令牌有有效期,建议在Web应用中添加令牌过期检测逻辑,当请求返回401未授权时,自动触发重新登录流程获取新令牌
  • 网络状态管理:使用sudo ./fablo [down|start|stop|up|prune|reset]命令维护Fabric网络,确保API能正常连接到链码服务

内容的提问来源于stack exchange,提问作者Bushra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:45:38