CLI를 사용하여 Postman 모음 생성
generate
명령을 사용하여 모든 체인코드 컨트롤러 API에 대한 예제 페이로드를 포함하는 Postman 모음을 생성할 수 있습니다.
Postman은 REST API를 사용하고 테스트하는 데 사용할 수 있는 도구입니다. generate 명령은 선언적 사양 파일에서 자동으로 생성된 체인코드를 기반으로 하는 Postman 컬렉션을 생성합니다. Postman 컬렉션은 체인코드 제어기 파일에 지정된 모든 메소드에 대한 페이로드를 포함합니다. Postman 컬렉션 파일에서 변수 값을 변경하여 REST API를 호출할 수 있습니다.
생성된 Postman 컬렉션은 컨트롤러의 모든 API에 대한 기본값을 포함합니다. Postman에 대한 자세한 내용은 https://www.postman.com/을 참조하십시오. Postman 컬렉션을 생성한 후 페이로드 및 변수의 기본값을 변경하여 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 모음을 생성하려면 프로젝트가 포함된 디렉토리로 이동한 다음 다음 명령을 입력합니다. chaincode 디렉토리에서 generate
명령을 실행해야 합니다. 그렇지 않으면 오류가 발생합니다. 지정한 Postman 컬렉션이 이미 있으면 덮어쓸지 묻는 메시지가 표시됩니다.
ochain generate --collection --project path_to_chaincode_project --out path_to_postman_collection_to_generate
Postman 수집 구조
- 호출 요청에는 끝점
/transactions
를 사용하는 모든 쓰기 작업이 포함됩니다. - 질의 요청에는 끝점
/chaincode-queries
를 사용하는 모든 get 작업이 포함됩니다.
컨트롤러 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 |
토큰 체인코드만 |
생성된 모든 요청에서 기본값이 있는 모든 매개변수가 생성됩니다. struct/class 매개변수가 있는 함수는 다음 예제에 표시된 것처럼 요청 본문에 위치 표시자 객체를 가집니다.
- struct/class 매개변수를 포함하는 API
-
{ "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
의 filters 매개변수:"{\"PageSize\":20,\"Bookmark\":\"\",\"StartTime\":\"2022-01-16T15:16:36+00:00\",\"EndTime\":\"2022-01-17T15:16:36+00:00\"}"
GetSubTransactionsByIdWithFilters
의 filters 매개변수:"{\"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를 보여 줍니다.
Fungible 토큰 | 사용할 수 없는 토큰 | |
---|---|---|
요청 이름 | AddRole -For Fungible |
AddRole -For NonFungible |
요청 본문 |
|
|