我已经使用composer-rest-server部署了我的业务网络,并且能够使用邮递员调用API。
目前,我已经为参与者/资产设置了硬编码的ID,因此我无法再发起POST呼叫,因为具有ID的对象已经存在。
我在哪里可以删除现有的参与者/资产?在作曲家游乐场上,测试页上提供了一个删除按钮,该按钮提供了此功能。
答案 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可以看到它。这将是运行测试的首选方法,因为这不是在正常环境中创建测试数据然后将其删除的情况,因此您必须要小心,因为块数会不断增加。