使用命令行生成包装 API 规范和 Postman 集合
您可以使用区块链应用程序构建器创建筛选的令牌和账户/身份端点规范文件以及匹配的 Postman 集合。
wrapper-api-endpoints-config Hardhat 任务从部署的合同对象或 ABI 文件生成端点配置文件和 Postman 集合。Postman 任务还可以包含 ORDS Swagger/OpenAPI 文档和组合 API 定义。
先决条件
- 如果计划使用构件,请安装项目的相关项并进行编译。
- 确保在
hardhat.config.ts文件中配置了 Wrapper API 插件及其任务。 - 标识令牌,并在适用时标识账户合同构件或 ABI 文件。
生成端点配置
从预打包的合同项目的根目录运行以下命令。将示例路径和名称替换为项目中的路径。
要为要公开的每个合同目标生成端点配置文件,请运行以下命令。
npx hardhat generate:wrapper-api-endpoints-config \
--artifact artifacts/contracts/Token.sol/Token.json \
--out generated/wrapper-api/token-endpoints.json
npx hardhat generate:wrapper-api-endpoints-config \
--artifact artifacts/contracts/Account.sol/Account.json \
--out generated/wrapper-api/account-endpoints.json要改为从 ABI 文件开始,请将 --artifact 替换为 --abi,如以下示例中所示。
npx hardhat generate:wrapper-api-endpoints-config \
--abi ./abi/Token.json \
--out generated/wrapper-api/token-endpoints.json请先复核生成的端点配置,以便您可以选择或细化包装 API 公开的方法和路径。
生成 Wrapper API Postman 集合
将一个或多个端点配置文件作为逗号分隔值传递,如以下示例中所示。
npx hardhat generate:wrapper-api-postman-collection \
--inputs generated/wrapper-api/token-endpoints.json,generated/wrapper-api/account-endpoints.json \
--out generated/wrapper-api/wrapper-api.postman.collection.json将生成的集合导入 Postman,并使用已部署包装 API 的 URL 和身份证明填充其环境变量。
包括 ORDS Swagger/OpenAPI 文件
可选的 --ords-swagger 参数接受 ORDS Swagger/OpenAPI JSON 文件。其 GET 操作将添加到生成的 Postman 集合中的 ORDS Endpoints 文件夹下,并在生成的配置中注册为 ORDS 后端覆盖。
npx hardhat generate:wrapper-api-postman-collection \
--inputs generated/wrapper-api/token-endpoints.json,generated/wrapper-api/account-endpoints.json \
--ords-swagger ./api/ords.swagger.json \
--out generated/wrapper-api/wrapper-api.postman.collection.json使用有效的 JSON Swagger/OpenAPI 文档。此命令未部署该文件;它是用于构建包装 API 和 Postman 资产的输入。
定义组合 API
组合 API 通过一个 POST 端点按顺序运行多个合同方法。首先,生成端点配置。然后,向该配置中添加一个 combinedApis 项,如以下示例中所示。
{
"combinedApis": [
{
"name": "createAccountWithRole",
"path": "createAccountWithRole",
"httpMethod": "POST",
"inputs": {
"required": ["account", "role", "userId"]
},
"steps": [
{ "method": "createAccount", "args": ["userId"] },
{ "method": "addRole", "args": ["account", "role"] }
],
"mappings": {
"createAccount": { "userId": "request.userId" },
"addRole": {
"account": "request.account",
"role": "request.role"
}
}
}
]
}将此片段与生成的配置合并;不要替换其生成的端点内容。使用合同中的实际 ABI 方法名称和参数名称。请求主体将指定的输入作为顶层字段提供,例如:account、role 和 userId。它不使用有效负载包装器。
所有步骤必须属于同一目标配置。组合的 API 不能将令牌方法与账户或身份方法混合。步骤按编写顺序运行。设计顺序和失败处理时要考虑该行为。然后,使用编辑后的配置生成集合,如以下示例所示。
npx hardhat generate:wrapper-api-postman-collection \
--inputs generated/wrapper-api/account-endpoints.json \
--out generated/wrapper-api/account-wrapper-api.postman.collection.json故障排除
| 条件 | 解决方法 |
|---|---|
| 找不到任务 | 检查项目是否在 hardhat.config.ts 文件中安装并配置了包装 API 插件。
|
| 找不到构件或 ABI 文件 | 使用 --artifact 选项编译项目,或者更正传递给 --artifact 或 --abi 选项的路径。
|
| 缺少 ORDS 端点 | 验证 --ords-swagger 路径指向有效的 JSON 并且源包含支持的 GET 操作。
|
| 组合 API 验证失败 | 确保存在名称、路径、步骤、所需输入和映射。验证所有引用的方法是否都属于同一标记或账户/身份配置。 |