数据 API 生成器 (DAB) 提供了 RESTful Web API,可用于从连接的数据库中访问表、视图和存储过程。 每个公开的数据库对象都定义为运行时配置中的 实体 。
默认情况下,DAB 在以下位置托管 REST 终结点:
https://{base_url}/api/{entity}
注释
所有路径组件和查询参数都区分大小写。
数据 API 生成器支持的关键字
| 概念 | REST | 目的 |
|---|---|---|
| 投影 | $select | 选择要返回的字段 |
| Filtering | $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" }
]
}
注释
默认情况下,除非另有配置(runtime.pagination.default-page-size)否则,DAB 每个查询最多返回 100 个项目。
查询类型
每个 REST 实体都支持集合和单记录读取。
| 操作 | DESCRIPTION |
|---|---|
GET /api/{entity} |
返回记录列表 |
GET /api/{entity}/{primary-key-column}/{primary-key-value} |
按主键返回一条记录 |
返回一条记录的示例:
GET /api/book/id/1010
返回多个示例:
GET /api/book
筛选结果
$filter使用查询参数限制返回的记录。
GET /api/book?$filter=title eq 'Foundation'
此查询返回标题等于“Foundation”的所有书籍。
筛选器可以包括更复杂的查询的逻辑运算符:
GET /api/book?$filter=year ge 1970 or title eq 'Dune'
有关支持的运算符,请参阅$filter参数参考,例如eq、ne、lt、leand和or。
对结果进行排序
该 $orderby 参数定义记录的排序方式。
GET /api/book?$orderby=year desc, title asc
这会返回按 year 降序排序的书籍,然后返回按降序排列的 title书籍。
有关更多详细信息,请参阅 $orderby参数参考 。
限制结果 {#first-and-after}
该 $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 还支持创建、更新和删除操作,具体取决于实体的权限。
| 方法 | Action |
|---|---|
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