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

时间:2018-10-09 23:28:10

标签: hyperledger hyperledger-composer

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

目前,我已经为参与者/资产设置了硬编码的ID,因此我无法再发起POST呼叫,因为具有ID的对象已经存在。

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

3 个答案:

答案 0 :(得分:2)

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

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

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

如果要删除业务网络中的所有数据,可以调查composer network reset命令。 (在Composer文档中为described here。)

答案 1 :(得分:0)

使用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);

您可以在以下link

中的文档中找到有关撤销身份的更多信息。

答案 2 :(得分:0)

既然已经部署了API,请使用其Swagger接口查看可以做什么。这是一个RESTful api,这意味着每个端点都接受对其有意义的HTTP动词。

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

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

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

如果要运行测试并确保正确创建资产,则可以开始使用功能文件,这里有一个示例功能。它使用了一个特定的composer黄瓜包,如果查看package.json可以看到它。这将是运行测试的首选方法,因为这不是在正常环境中创建测试数据然后将其删除的情况,因此您必须要小心,因为块数会不断增加。