如何调用 REST 终结点

数据 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参数参考,例如eqneltleandor

对结果进行排序

$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