您可以通過 REST API 呼叫智能合約,寫入或查詢鏈上資訊,也可以查詢區塊及交易資訊,並監聽區塊鏈事件。區塊鏈 REST-API 使用 Bearer Token 的認證方式,在調用API時,您需要額外指定 HTTP 頭 “Authorization: Bearer <Your Access Token>” 來提供您的 Access Token。
產生 Access Token
您可以按照以下步驟產生 Access Token 與 Refresh Token,用來訪問 REST-API 以及更新 Access Token。
進入組織的 REST-API 展示頁面,如果您未安裝雲端服務整合功能,需要按照引導完成安裝,更多請參考安裝雲端服務整合。

點擊頁面右上方的“產生Token”,會彈出如下對話方塊。根據使用情境,選擇合適的 Access Token 與 Refresh Token 的有效期間,並勾選 Token 具有的許可權。

點擊側邊欄的“產生Token”,會在下方展示產生的 Token 資訊。
使用 Swagger UI,測試 REST-API
使用 REST-API 展示頁面中的 Swagger UI 之前,您需要先產生Access Token, 才能開啟 Swagger UI 控制台測試 REST-API。
配置Access Token
如果您產生的 Access Token 已經到期,或者希望測試應用APP使用的特定 Access Token,您可以按照以下步驟修改 Swagger UI 控制台使用的 Access Token。
點擊頁面中的“Authorize”按鈕,彈出認證資訊輸入對話方塊。

如果已經配置了 Access Token,先點擊“Logout”刪除舊的認證資訊。

在 “Value” 中輸入我們已經產生好的 Access Token,並點擊“Authorize”。

點擊“Close”關閉對話方塊,我們可以看到 API 右側的小鎖已經是鎖定狀態,表示我們已經成功輸入了認證資訊

發起請求
選擇您想要調試的 REST API(這裡以 invoke 為例),點擊API標題,展開詳細描述。

點擊描述右側的“Try it out”,按照調試需求,調整API的參數。

點擊“Execute”發起請求,請求返回後,您可以在下方看到返回結果。

介面 /networks/{network}/events/subscribe 不能通過 Swagger UI 調試,測試方法請參考文檔訂閱事件。
重新整理 Access Token
Access Token 有效期間較短,在 Token 即將到期時需要使用 Refresh Token 來擷取新的 Access Token。REST-API 提供了符合 OAuth 2.0 標準的重新整理介面 “/api/v1/token”,我們建議您使用標準 OAuth SDK 來自動重新整理Token並訪問 REST-API。您可以在 OAuth 庫實現 中找到各個語言的 OAuth Client 實現,也可以在這裡直接存取我們提供的幾種常用語言的 Client SDK 使用樣本:
SDK的調用參數預設基於樣本鏈碼,您可以在文檔智能合約樣本中擷取樣本鏈碼 notary 。
Java SDK 樣本
擷取 Java SDK 樣本,需要 Java 版本 >= 1.8。
根據您組織執行個體的 REST-API 地址、產生的 Token 資訊、業務通道和鏈碼資訊,修改檔案
java-oauth-client/src/main/resources/application.properties。進入目錄
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 shutdownGo SDK 樣本
擷取 Go SDK 樣本, 需要 go 版本為 1.13.x。
根據您組織執行個體的 REST-API 地址、產生的 Token 資訊、業務通道和鏈碼資訊,修改檔案
go-oauth-client/src/go-oauth-client/main.go中的參數。進入目錄
go-oauth-client/src/go-oauth-client執行go run main.go運行樣本程式。
正常結果樣本
> 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 SDK 樣本, 需要 nodev8 版本 >= 8.17。
根據您組織執行個體的 REST-API 地址、產生的 Token 資訊、業務通道和鏈碼資訊,修改檔案
node-oauth-client/main.js中的參數。進入目錄
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==' }