資料 API 產生器 (DAB) 提供 RESTful Web API,可讓您從連線的資料庫存取資料表、檢視和預存程序。 每一個公開的資料庫物件都會定義為執行時期配置中的 實體 。
根據預設,DAB 會將 REST 端點託管在:
https://{base_url}/api/{entity}
備註
所有路徑元件和查詢參數都區分大小寫。
Data API 產生器支援的關鍵字
| 概念 | REST | 目標 |
|---|---|---|
| Projection | $select | 選擇要傳回的欄位 |
| 篩選 | $filter | 依條件限制資料列 |
| 排序 | $orderby | 定義排序順序 |
| 頁面大小 | $first | 限制每頁的項目 |
| 繼續 | $after | 從最後一頁繼續 |
基本結構
若要呼叫 REST API,請使用下列模式建構要求:
{HTTP method} https://{base_url}/{rest-path}/{entity}
從實體讀取 book 所有記錄的範例:
GET https://localhost:5001/api/book
回應是 JSON 物件:
{
"value": [
{ "id": 1, "title": "Dune" },
{ "id": 2, "title": "Foundation" }
]
}
備註
根據預設,除非另有設定,否則每個查詢 DAB 最多會傳回 100 個項目 (runtime.pagination.default-page-size)。
查詢類型
每一個 REST 實體都支援集合和單一記錄讀取。
| 行動 | 說明 |
|---|---|
GET /api/{entity} |
傳回記錄清單 |
GET /api/{entity}/{primary-key-column}/{primary-key-value} |
依主鍵返回一筆記錄 |
傳回一筆記錄的範例:
GET /api/book/id/1010
範例回傳多個結果
GET /api/book
篩選結果
使用 $filter query 參數來限制傳回哪些記錄。
GET /api/book?$filter=title eq 'Foundation'
此查詢會傳回標題等於「基礎」的所有書籍。
篩選器可以包含更複雜查詢的邏輯運算子:
GET /api/book?$filter=year ge 1970 or title eq 'Dune'
請參閱 $filter 引數參考,以取得支援的運算子,例如 eq、ne、lt、le、and 和 or。
排序結果
此 $orderby 參數定義記錄的排序方式。
GET /api/book?$orderby=year desc, title asc
這會傳回依year遞減排序的書籍,然後再依title排序。
如需詳細資訊,請參閱 $orderby引數參考 。
限制結果 {#first 及之後}
此 $first 參數會限制在一個要求中傳回多少筆記錄。
GET /api/book?$first=5
這會傳回前五本書,依預設依主索引鍵排序。
您也可以使用 $first=-1 來要求設定的頁面大小上限限制。
在 $first引數參考中了解更多信息。
持續的結果
若要擷取下一頁,請使用上一個回應中的連續標記搭配 $after。
GET /api/book?$first=5&$after={continuation-token}
最後一個查詢的結束位置由 $after 標記識別。
如需詳細資訊,請參閱 $after 引數參考。
欄位選擇(投影)
用於 $select 控制回應中包含哪些欄位。
GET /api/book?$select=id,title,price
這個指令只會傳回指定的資料行。
如果缺少或無法存取欄位,DAB 會傳回 400 Bad Request。
如需詳細資訊,請參閱$select引數參考。
修改資料
REST API 也支援建立、更新和刪除作業,視實體許可權而定。
| 方法 | 行動 |
|---|---|
POST |
建立新專案 |
PUT |
取代現有項目 (或建立遺失的項目) |
PATCH |
更新現有項目 (或如果缺少則建立) |
DELETE |
依主索引鍵移除項目 |
建立新記錄的範例:
POST /api/book
Content-type: application/json
{
"id": 2000,
"title": "Leviathan Wakes"
}
更新現有記錄的範例:
PATCH /api/book/id/2000
Content-type: application/json
{
"year": 2011,
"pages": 577
}
刪除記錄的範例:
DELETE /api/book/id/2000