CLI를 사용하여 Postman 컬렉션 생성
generate
명령을 사용하여 모든 체인코드 컨트롤러 API에 대한 예제 페이로드를 포함하는 Postman 모음을 생성할 수 있습니다.
Postman은 REST API 작업 및 테스트에 사용할 수 있는 도구입니다. generate 명령은 선언 사양 파일에서 자동으로 생성된 체인 코드를 기반으로 하는 Postman 모음을 생성합니다. Postman 컬렉션은 체인코드 컨트롤러 파일에 지정된 모든 메소드에 대한 페이로드를 포함합니다. Postman 컬렉션 파일의 변수 값을 변경하여 REST API를 호출할 수 있습니다.
생성된 Postman 컬렉션에는 컨트롤러의 모든 API에 대한 기본값이 포함됩니다. Postman에 대한 자세한 내용은 https://www.postman.com/를 참조하십시오. Postman 컬렉션을 생성한 후 페이로드 및 변수의 기본값을 변경하여 직접 가져와서 사용할 수 있습니다.
사용법:
generate [options]
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 요청에 액세스할 수 있는 admin 롤을 가진 사용자). 기본적으로 이 사용자는 체인 코드에 있는 모든 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
의 필터 매개변수:"{\"PageSize\":20,\"Bookmark\":\"\",\"StartTime\":\"2022-01-16T15:16:36+00:00\",\"EndTime\":\"2022-01-17T15:16:36+00:00\"}"
GetSubTransactionsByIdWithFilters
의 필터 매개변수:"{\"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 |
요청 본문 |
|
|