我已经使用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 内部,你可以看到这一点。这将是运行测试的首选方法,因为这不是创建测试数据然后删除它的正常环境,您必须小心,因为您的块计数会不断增加。