如何在Hyperledger Composer上使用REST API删除资产/参与者?



我已经使用composer-rest-server部署了我的业务网络,并且能够使用postman调用API。

目前,我已经为参与者/资产进行了硬编码ID,因此由于具有ID的对象已经存在,因此我无法进行另一次POST调用。

在哪里可以删除现有的参与者/资产?在作曲家操场上,测试页面上有一个删除按钮,提供了此功能。

如果您使用的是 POSTMAN,则可以使用 DELETE 请求来删除测试数据。

使用 Composer 教程中的 Trade 示例,您将使用以下 curl 命令删除商品 COAL:

curl -X DELETE --header 'Accept: application/json' 'http://localhost:3000/api/Commodity/COAL'

如果要删除业务网络中的所有数据,可以调查composer network reset命令。(在作曲家文档中进行了描述。

使用 JavaScript composer-client 可以执行以下操作:

const { BusinessNetworkConnection } = require('composer-client');
const participantRegistry = await BusinessNetworkConnection.getParticipantRegistry(registry name space, type);
await participantRegistry.remove(registry name space#participantId);
const assetRegistry = await BusinessNetworkConnection.getAssetRegistry(registry name space);
await assetRegistry.remove(registry name space#asset id);

甚至你可以执行更多

await assetRegistry.removeAll(registry name space);

但是,在从注册表中删除参与者之前,应通过执行以下操作来撤销其绑定标识:

const IdentityRevoke = require('composer-cli').Identity.Revoke;
let options = {
card: 'admin@tutorial-network',
identityId: 'f1c5b9fe136d7f2d31b927e0dcb745499aa039b201f83fe34e243f36e1984862'
};
IdentityRevoke.handler(options);

您可以在以下链接中找到有关撤销身份的文档的详细信息

既然您已经部署了 API,请使用其 Swagger 界面查看您可以执行的操作。它是一个 RESTful api,这意味着每个端点都接受对其有意义的 HTTP 动词。

例如,每个资产和参与者终端节点都接受 DELETE 请求,您只需传递要删除的实体的 ID。

您可以发出 POST 请求以创建新数据,也可以发出 PUT 请求以更新数据。

需要注意的一件事是,每个请求都会在账本上创建一个新区块。DELETE并不意味着前一个区块消失,它只是意味着它处于已删除状态,并且您发出的每笔交易的区块计数不断增加。

如果要运行测试并确保正确创建资产,则可以开始使用功能文件,有一个示例功能可以帮助您入门。它使用特定的作曲家黄瓜包,如果你查看 package.json 内部,你可以看到这一点。这将是运行测试的首选方法,因为这不是创建测试数据然后删除它的正常环境,您必须小心,因为您的块计数会不断增加。

相关内容

  • 没有找到相关文章

最新更新