API使用說明
一、政府計畫資料庫(以下簡稱本平臺)之API資料服務,為在有限的資源下提供使用者穩定的資料服務水準、提升服務品質以及加強資訊安全管理,故本平臺導入會員及API管理機制。
二、當會員介接API服務時,須帶入APP ID與APP Key加上當下的時間戳記組成之簽章始取得服務。歡迎先至API使用範例網站(Swagger)輸入APP ID 及APP Key進行測試。
三、APP ID為會員申請API服務時,系統自動產生之唯一識別身份值;APP Key則為該APP ID對應之加密憑證。
四、API使用範例網站(Swagger)使用說明
1.請於Swagger右上角輸入APP ID與APP Key並按下Explore。

2.點選任一API服務進行測試,API說明如下:
/DatasetList
可查詢使用者可取得之資料集清單
/SchemaInfoApi/{Dsno}
輸入資料集編號,可取得該資料集欄位
/Dataset/{Dsno}
輸入資料集編號,可取得資料內容
3.以/DatasetList為例,點選該服務並點擊Try it out!,即可於Response Body瀏覽API呼叫結果。

4.最後透過/DatasetList 所取得的 Dsno 欄位內容,即可至/SchemaInfoApi/{Dsno}或/Dataset/{Dsno}服務取得資料內容。
五、 API授權驗證
1. 本平臺採用HMAC認證授權機制,以HMAC簽章驗證使用者的身份,用戶在請求API服務時,將APP Key 與當下時間(格式請使用GMT時間)做HMAC-SHA256 運算後轉成Base64 格式,帶入signature屬性欄位,服務器端將驗證用戶請求時的header欄位,驗證使用者身份及請求服務的時效性。
2. HMAC Signature簽章時效性:於使用範例網站(Swagger)測試時,請在最上方輸入APP ID與APP Key (請再次確認是否有將APP ID與APP Key填寫正確,若欄位資訊相反會無法執行)。 點選Explore ,每次請求下方API時,會於header 帶入Authorization 及 x-date ,依照請求當下的時間及APP Key 製作簽章。
3. 建議於每次請求API服務當下建立新的signature ,簽章時效性為5分鐘。
Authorization
hmac username="APP ID", algorithm="hmac-sha256",
headers="x-date", signature="Base64(HMAC-SHA256("x-date: " + x-date , APP Key))"
x-date
Tue, 24 Aug 2021 04:05:16 GMT
4. HMAC認證失效樣態:依照存取API 的HTTP header資訊判別用戶是否為授權身份,若未符合身份驗證將以下列訊息回應用戶端。
(1) HTTP Status Code 400錯誤發生原因:輸入的API參數錯誤或OData語法錯誤。
(2) HTTP Status Code 401錯誤發生原因:未帶簽章,未經授權,APP ID或Key輸入錯誤。
(3) HTTP Status Code 403錯誤發生原因:無該資料集使用權限; x-date的間隔時間超過定義的clock skew秒數;x-date日期格式正確,但簽章演算法有問題。
六、 OData查詢語法
$select
回傳資料的某些欄位
回傳欄位1
$select= Field1
$filter
回傳符合特定表達式的資料
欄位A等於abc123的資料
$filter= FieldA eq ' abc123'
欄位A包含abc123的資料
$filter= contains(FieldA, ' abc123)
$orderby
決定資料的結果排序是升冪或降冪
針對欄位1作升冪
$orderby= Field1 asc
針對欄位1作降冪
$orderby= Field1 desc
$top
表示回傳前 n 筆資料
取前10筆
$top=10
$skip
表示略過前 n 筆資料
跳過前100筆
$skip=100
$format
決定資料的格式
$format=json
Last updated
Was this helpful?