使用 CLI 產生 Postman Collection
您可以使用 generate
命令建立 Postman 集合,其中包含所有鏈碼控制器 API 的範例有效負載。
Postman 是一種工具,可用來使用及測試 REST API。Generate 命令會根據從宣告式規格檔案自動產生的鏈碼建立 Postman 集合。Postman 集合包含鏈碼控制器檔案中指定之所有方法的有效負載。您可以變更 Postman 收集檔案中的變數值,以進行 REST API 呼叫。
產生的 Postman 集合包括控制器中所有 API 的預設值。若要進一步瞭解 Postman,請參閱 https://www.postman.com/ 。產生 Postman 集合後,您可以直接匯入該集合,並藉由變更有效負載和變數中的預設值來加以使用。
用法:
generate [options]
my-mac:TsProject myname$ ochain generate -h
Usage: generate [options]
Generates the postman collection for the chaincode.
Options :
-h, --help output command usage information
-D, --debug enable debug logging
-c, --collection This option is mandatory to generate a Postman collection.
-p, --project <path> Path to the chaincode project to generate the Postman collection from. If not specified, it defaults to current directory.
-o, --out <path> Path to the generated Postman collection JSON file. If not specified, it defaults to current directory.
如果要產生 Postman 集合,請瀏覽至包含專案的目錄,然後輸入下列命令。您必須從鏈碼目錄執行 generate
命令,否則會發生錯誤。如果指定的 Postman 收藏已經存在,則系統會提示您是否要覆寫它。
ochain generate --collection --project path_to_chaincode_project --out path_to_postman_collection_to_generate
Postman 收藏結構
- 呼叫要求包括使用端點
/transactions
的所有寫入作業 - 查詢要求包括使用端點
/chaincode-queries
的所有取得作業
為了區分控制器 API 中的 getter 和 non-getter 方法,會在 TypeScript 鏈碼中使用修飾器,並在 Go 鏈碼中使用註解。如果您在控制器中定義 getter 方法,則必須使用 TypeScript 的 GetMethod 修飾器或 Go 的 GetMethod 註解,如下表所示。
TypeScript | 移至 |
---|---|
每個 getter 方法都有一個 GetMethod 修飾器:
|
每個 getter 方法都有 GetMethod 註解區塊:
|
產生的 Postman 集合包括含有預設值的變數,如下表所示。
變數名稱 | 描述 | 預設值 | 相關資訊環境 |
---|---|---|---|
bc-url |
部署鏈碼之 Oracle Blockchain Platform 執行處理的 REST 代理主機 URL | https://test-xyz-abc.blockchain.ocp.oraclecloud.com:7443/restproxy |
所有鏈碼 |
bc-channel |
部署鏈碼的通道 | default |
所有鏈碼 |
bc-admin-user |
管理員使用者的名稱 (具備可存取所有 POST 要求之管理員角色的使用者)。依照預設,此使用者是鏈碼中所有 POST 要求的呼叫者 | bc-admin-user value |
所有鏈碼 |
bc-admin-password |
管理員使用者的密碼 | bc-admin-password value |
所有鏈碼 |
bc-timeout |
每個 POST 要求的主體中指示逾時間隔的逾時值 | 6000 |
所有鏈碼 |
bc-sync |
每個 POST 要求主體中的同步值,指示要求是同步還是非同步 | true |
所有鏈碼 |
bc-chaincode-name |
每個 POST 要求中使用的鏈碼名稱 | chaincode name |
所有鏈碼 |
bc-org-id |
所有 POST 要求的預設 orgId 參數
|
bc-org-id value |
僅記號鏈碼 |
bc-user-id |
所有 POST 要求的預設 userId 參數
|
bc-user-id value |
僅記號鏈碼 |
bc-token-id |
所有 POST 要求的預設 tokenId 參數
|
bc-token-id value |
僅記號鏈碼 |
在每個產生的要求中,會產生所有含有預設值的參數。具有結構 / 類別參數的函數在要求主體中將會有預留位置物件,如下列範例所示。
- API 搭配 struct/class 參數
-
{ "chaincode": "{{bc-chaincode-name}}", "args": [ "CreateArtCollectionToken", "{\"TokenId\":\"{{bc-token-id}}\",\"TokenDesc\":\"TokenDesc value\",\"TokenUri\":\"TokenUri value\",\"TokenMetadata\":{\"Painting_name\":\"Painting_name value\",\"Description\":\"Description value\",\"Image\":\"Image value\",\"Painter_name\":\"Painter_name value\"},\"Price\":999,\"On_sale_flag\":true}", "quantity value" ], "timeout": {{bc-timeout}}, "sync": {{bc-sync}} }
- 不含 struct/class 參數的 API
-
{ "chaincode": "{{bc-chaincode-name}}", "args": [ "CreateAccount", "{{bc-org-id}}", "example_minter", "true", "true" ], "timeout": {{bc-timeout}}, "sync": {{bc-sync}} }
大多數 API 參數的預設值為 parameter_name value
,但有一些例外。下列範例顯示某些例外。
GetAccountTransactionHistoryWithFilters
中的 filter 參數:"{\"PageSize\":20,\"Bookmark\":\"\",\"StartTime\":\"2022-01-16T15:16:36+00:00\",\"EndTime\":\"2022-01-17T15:16:36+00:00\"}"
GetSubTransactionsByIdWithFilters
中的 filter 參數:"{\"PageSize\":20,\"Bookmark\":\"\}"
結構或類別具有不同的預設值,如下表所示:
資料類型 | 預設值 |
---|---|
boolean/bool |
true |
int/number |
999 |
date |
2022-01-16T15:16:36+00:00 |
other |
parameter_name value |
ERC-1155 權杖專案
ERC-1155 標準包含有趣和不可行記號的常用方法。為 ERC-1155 專案產生的 Postman 集合,該專案使用了不合法的記號與不合法的記號,其中包含了兩種不同的 POST 要求,每一種類型的記號,適用於這些常用的方法。如果 ERC-1155 專案只使用有趣或不合格的記號,但不是兩種類型,則產生的 Postman 集合只會包含這些一般方法的一個 POST 要求。下表說明為AddRole
方法產生的 API。
有趣的代幣 | 不合法的代幣 | |
---|---|---|
要求名稱 | AddRole -For Fungible |
AddRole -For NonFungible |
要求主體 |
|
|