すべてのプロダクト
Search
ドキュメントセンター

Blockchain as a Service:REST API の使用

最終更新日:Apr 01, 2026

REST API を使用すると、スマートコントラクトの呼び出し、台帳からのブロックおよびトランザクションデータのクエリ、ブロックチェーンイベントのサブスクライブができます。すべてのリクエストには、ベアラートークン認証が必要です。すべての API 呼び出しに、次の HTTP ヘッダーを含めてください:

Authorization: Bearer <your-access-token>

前提条件

作業を開始する前に、以下を確認してください:

  • 組織が設定された Blockchain as a Service (BaaS) インスタンス

  • Cloud Service Integration モジュールがインストールされていること。インストールされていない場合は、先に進む前に「Cloud Service Integration のインストール」の手順に従ってください。

アクセストークンの生成

REST API は、リクエストを認証するためのアクセストークンと、現在のアクセストークンが有効期限切れになったときに新しいアクセストークンを取得するための更新トークンの 2 種類のトークンを使用します。

  1. ご利用の組織の REST API ページに移動します。

    rest api入口

  2. 右上隅にある [トークンの生成] をクリックします。サイドバーが表示されます。アクセストークンと更新トークンの有効期間を選択し、トークンに必要な権限をチェックします。

    image.png

  3. サイドバーで [トークンの生成] をクリックします。生成されたトークン情報がテキストボックスに表示されます。

アクセストークンをコピーします。このトークンは、API 呼び出しの認証や Swagger UI の設定に使用します。

Swagger UI を使用したデバッグ

Swagger UI は REST API ページで利用でき、ブラウザから直接テストリクエストを送信できます。

アクセストークンの設定

Swagger UI で使用されるトークンを更新するには (たとえば、トークンの有効期限が切れた場合や、別のトークンをテストしたい場合など)、次の手順を実行します:

  1. ページ上の [Authorize] をクリックします。現在の認証情報を表示するダイアログが表示されます。

    认证按钮

  2. トークンがすでに設定されている場合は、[ログアウト] をクリックして既存の認証情報をクリアします。

    退出认证

  3. アクセストークンを [値] フィールドに入力し、[Authorize] をクリックします。

    输入Token

  4. [閉じる] をクリックします。各 API の横にあるロックアイコンがロック済みの状態になり、認証が設定されたことを確認できます。

    认证完成

リクエストの送信

  1. テストしたい API (たとえば invoke) を選択し、そのタイトルをクリックして詳細を展開します。

    API描述

  2. [試す] をクリックし、必要に応じてパラメーターを調整します。

    API参数

  3. [実行] をクリックします。リクエストの下に応答が表示されます。

    image.png

重要

/networks/{network}/events/subscribe エンドポイントは Swagger UI ではテストできません。テスト方法については、「イベントのサブスクライブ」をご参照ください。

アクセストークンの更新

アクセストークンは短命です。トークンの有効期限が近づいたら、更新トークンを使用して、再認証なしで新しいアクセストークンを取得します。

REST API は、OAuth 2.0 に準拠した更新エンドポイントを /api/v1/token で提供します。標準の OAuth 2.0 SDK を使用してトークンの更新を自動的に処理します。各言語のクライアント実装は oauth.net/code で見つけることができます。

または、以下の SDK サンプルのいずれかを使用します。各サンプルは、デフォルトで公証コントラクトを呼び出します。サンプルを実行する前に、公証サンプルコントラクトをダウンロードしてください。

Java SDK サンプル

要件: Java 1.8 以降

  1. Java SDK サンプルを取得します。

  2. java-oauth-client/src/main/resources/application.properties を編集し、ご利用の REST API アドレス、トークン情報、チャンネル名、スマートコントラクト情報を入力します。

  3. java-oauth-client ディレクトリから、以下を実行します:

    mvn spring-boot: run

実行が成功すると、次のような出力が生成されます:

> mvn spring-boot:run
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.0.6.RELEASE)

2020-02-17 18:00:09.056  INFO 79141 --- [           main] com.aliyun.baas.MainApplication          : Starting MainApplication on Bright.local with PID 79141 (java-oauth-client/target/classes started by bright in java-oauth-client)
2020-02-17 18:00:09.059  INFO 79141 --- [           main] com.aliyun.baas.MainApplication          : No active profile set, falling back to default profiles: default
2020-02-17 18:00:09.092  INFO 79141 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@5bf85360: startup date [Mon Feb 17 18:00:09 CST 2020]; root of context hierarchy
2020-02-17 18:00:09.775  INFO 79141 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2020-02-17 18:00:09.792  INFO 79141 --- [           main] com.aliyun.baas.MainApplication          : Started MainApplication in 0.958 seconds (JVM running for 3.321)
<200,class InlineResponse2002 {
    success: true
    result: class Block {
        number: 1
        hash: 1c397c4eb3e0e330c01ec430170f844e46159f16930aa347486b8153b6586548
        previousHash: 88ef0ad6ba2df7ba7e53de78575d2d14cee2253fe6897305e50b57ceeecebc78
        createTime: 1579056958
        transactions: []
        data: {data={data=[{payload={data={config={channel_group= ... }}}}]}}
    }
    error: class Error {
        code: 200
        message: Success
        requestId: edf8fe52-7cef-447f-a04a-7b8c1db56487
    }
},{Server=[nginx], Date=[Mon, 17 Feb 2020 10:00:10 GMT], Content-Type=[application/json; charset=UTF-8], Transfer-Encoding=[chunked], Connection=[keep-alive]}>
<200,class InlineResponse200 {
    success: true
    result: class Response {
        id: a5f5503f12b92a4c59e079e1baf49b517785e2d9988f90dfb234f6c3954a2389
        status: 200
        event: null
        data: MTU4MTkzMzYxMDEzNg==
    }
    error: class Error {
        code: 200
        message: Success
        requestId: 71a9f95f-ea5b-4dea-b4a1-a608ae429fb4
    }
},{Server=[nginx], Date=[Mon, 17 Feb 2020 10:00:11 GMT], Content-Type=[application/json; charset=UTF-8], Content-Length=[249], Connection=[keep-alive]}>
<200,class InlineResponse200 {
    success: true
    result: class Response {
        id: ba50180c9fe38c9be115f20775b78e80b7a1205c34ef34b66fab635efedc3b49
        status: 200
        event: null
        data: MTU4MTkzMzYxMDEzNg==
    }
    error: class Error {
        code: 200
        message: Success
        requestId: c703a36b-3589-4a8b-87a0-5e5bf56b2396
    }
},{Server=[nginx], Date=[Mon, 17 Feb 2020 10:00:11 GMT], Content-Type=[application/json; charset=UTF-8], Content-Length=[249], Connection=[keep-alive]}>
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.217 s
[INFO] Finished at: 2020-02-17T18:00:11+08:00
[INFO] ------------------------------------------------------------------------
2020-02-17 18:00:11.573  INFO 79141 --- [       Thread-3] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@5bf85360: startup date [Mon Feb 17 18:00:09 CST 2020]; root of context hierarchy
2020-02-17 18:00:11.574  INFO 79141 --- [       Thread-3] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans on shutdown

Go SDK サンプル

要件: Go 1.13.x

  1. Go SDK サンプルを取得します。

  2. go-oauth-client/src/go-oauth-client/main.go の設定を編集し、ご利用の REST API アドレス、トークン情報、チャンネル名、スマートコントラクト情報を入力します。

  3. go-oauth-client/src/go-oauth-client ディレクトリから、以下を実行します:

    > go run main.go
    ブロックのレスポンスボディ: {"Success":true,"Result":{"number":1,"hash":"1c397c4eb3e0e330c01ec430170f844e46159f16930aa347486b8153b6586548","create_time":1579056958,"previous_hash":"88ef0ad6ba2df7ba7e53de78575d2d14cee2253fe6897305e50b57ceeecebc78","transactions":[],"data":{"data":{"data":[{"payload":{"data":{"config":{"channel_group": ...}}}}]}}}
    呼び出しのレスポンスボディ: {"Success":true,"Result":{"id":"e0a11c3b953fa1759ef715214bb8bd24c0a7e762b739eb5f645ead921314fef4","status":"200","events":[],"data":"MTU4MTkzNDAwOA=="},"Error":{"code":200,"message":"Success","request_id":"c3c92ad0-a0ef-4a82-b596-4ac50a893ef6"}}
    コントラクト呼び出しの応答: "MTU4MTkzNDAwOA=="
    クエリのレスポンスボディ: {"Success":true,"Result":{"id":"c3d4c2928dfa7129641863b18dfeee4b18c7227929c841ff7d8bd25148f6c5f6","status":"200","events":[],"data":"MTU4MTkzNDAwOA=="},"Error":{"code":200,"message":"Success","request_id":"f1bf52b2-8c60-491e-9a40-8fecb96667ea"}}
    コントラクトクエリの応答: "MTU4MTkzNDAwOA=="

実行が成功すると、次のような出力が生成されます:

> go run main.go
Block response body: {"Success":true,"Result":{"number":1,"hash":"1c397c4eb3e0e330c01ec430170f844e46159f16930aa347486b8153b6586548","create_time":1579056958,"previous_hash":"88ef0ad6ba2df7ba7e53de78575d2d14cee2253fe6897305e50b57ceeecebc78","transactions":[],"data":{"data":{"data":[{"payload":{"data":{"config":{"channel_group": ...}}}}]}}}
Invoke response body: {"Success":true,"Result":{"id":"e0a11c3b953fa1759ef715214bb8bd24c0a7e762b739eb5f645ead921314fef4","status":"200","events":[],"data":"MTU4MTkzNDAwOA=="},"Error":{"code":200,"message":"Success","request_id":"c3c92ad0-a0ef-4a82-b596-4ac50a893ef6"}}
Invoke contract response: "MTU4MTkzNDAwOA=="
Query response body: {"Success":true,"Result":{"id":"c3d4c2928dfa7129641863b18dfeee4b18c7227929c841ff7d8bd25148f6c5f6","status":"200","events":[],"data":"MTU4MTkzNDAwOA=="},"Error":{"code":200,"message":"Success","request_id":"f1bf52b2-8c60-491e-9a40-8fecb96667ea"}}
Query contract response: "MTU4MTkzNDAwOA=="

Node SDK サンプル

要件: Node.js 8.17 以降

  1. Node SDK サンプルを取得します。

  2. node-oauth-client/main.js の設定を編集し、ご利用の REST API アドレス、トークン情報、チャンネル名、スマートコントラクト情報を入力します。

  3. node-oauth-client ディレクトリから、依存関係をインストールしてサンプルを実行します:

    npm install
    node main.js

実行が成功すると、次のような出力が生成されます:

> node main.js
{ number: 1,
  hash: '1c397c4eb3e0e330c01ec430170f844e46159f16930aa347486b8153b6586548',
  create_time: 1579056958,
  previous_hash: '88ef0ad6ba2df7ba7e53de78575d2d14cee2253fe6897305e50b57ceeecebc78',
  transactions: [],
  data:
   { data: { data: [Array] },
     header:
      { data_hash: 'HDl8TrPg4zDAHsQwFw+ETkYVnxaTCqNHSGuBU7ZYZUg=',
        number: '1',
        previous_hash: 'iO8K1rot97p+U954V10tFM7iJT/miXMF5QtXzu7OvHg=' },
     metadata: { metadata: [Array] } } }
Data 1581931486180 pushed to blockchain with transaction f19217c0db571dc715af8ad99025422f03e5561910371841fe5e69a356d0cb23
{ id: '8fd06f6087c5128b7dbe309658b170366b37e0733994e5e959d30be201c28827',
  status: '200',
  events: [],
  data: 'MTU4MTkzMTQ4NjE4MA==' }

次のステップ

  • イベントのサブスクライブ/networks/{network}/events/subscribe エンドポイントを使用してブロックチェーンイベントをサブスクライブします