# 数据服务API调用说明
# 获取授权
# 获取授权账号和密钥
在服务授权后,可以在数据服务-服务管理-服务授权页面查看对应账号和密钥

# 获取对应 Token
[url]/api/clients/auth[METHOD]POST[Content-Type]multipart/form-data
# 入参
| 参数名称 | 参数类型 | 参数说明 |
|---|---|---|
| ciphertext | boolean | 是否加密 |
| client | string | 账号 |
| secret | string | 密钥 |
# 出参
| 参数名称 | 参数类型 | 参数文档 |
|---|---|---|
| client | string | 账号 |
| token | string | token |
| expiresAt | long | 失效时间 |
# 调用示例

# 查询操作
# 查询数据
[url]/api/sql-services/:id/query[METHOD]GET/POST[Content-Type]application/json
# 调用前置条件
需将获取授权接口中获取到的 token 参数传入
在 header 中添加 Authorization: Bearer {token}
或者在 postman 中将 token 填写到下图中的对应位置

# 调用示例

# 分页
开发者通过 API 接口获取数据时,数据会以页的形式传输。分页通过 pageNumber 与 pageSize 参数生效,pageNumber 表示第 n-1 页,pageSize 表示当前的页面的数据条数。pageNumber 默认值为 0,pageSize 默认值为 10。
默认最大分页数为 1000,可以通过修改配置 service.sql.query.max-page-size=1000 进行修改
注意:
1.键值对形式的参数既可写在 URL 的后面。
2.带有请求体的请求无法直接在浏览器地址栏中访问,如需测试,请使用 postman 等工具,或浏览器安装可以发送 post 请求的插件。如图 2 以 postman 为例,在拥有网络环境的情况下,可访问 postman 官网下载。

# 排序
实现排序需要使用参数 sorts,而且由于排序参数较为复杂只能使用请求体构建
sorts 是声明排序的关键字,name 是想要用于排序的字段,direction 为排序方式,ASC 为升序,DESC 为降序。
示例:

# 条件查询
API 接口中作为查询条件传递的字段,必须是“接口输入参数”(即服务开发中选择的输入参数),如果该字段不是接口输入参数,作为查询条件进行传参,接口会返回对应的报错信息 注:1.如果某个字段是必填字段,即必须传递此字段,否则无法获取 API 数据(在请求 api 后会返回相应的错误信息提示)
查询示例如下

条件查询的入参为 criteria,支持参数条件逻辑嵌套写法。从而支持较复杂的查询逻辑.
name 为查询字段名
value 为查询值,数量根据 match 的值改变
match 为条件 当为父节点时值为 OR/AND,当作为查询条件的时候可为下方表格中内容
| value | 等效 sql 匹配符号 | 传递 value 数组大小 |
|---|---|---|
| eq | = | 1 |
| ne | <> | 1 |
| gt | > | 1 |
| ge | >= | 1 |
| lt | < | 1 |
| le | <= | 1 |
| like | LIKE | 1 |
| not_like | NOT LIKE | 1 |
| between | BETWEEN | 2 |
| not_between | NOT BETWEEN | 2 |
| in | IN | 不限 |
| not_in | not_in | 不限 |
| not_null | IS NOT NULL | 0 |
| is_null | IS NULL | 0 |
# 简单条件查询
{
"criteria": {
"match": "AND",
"children": [
{
"name": "cataId",
"value": [1565],
"match": "eq"
}
]
}
}
# 模糊条件查询
{
"criteria": {
"match": "AND",
"children": [
{
"name": "cataTitle",
"value": ["%BUSINESS%"],
"match": "like"
}
]
}
}
# 比较条件查询
{
"criteria": {
"match": "AND",
"children": [
{
"name": "updateTime",
"value": ["2024-03-16 00:23:04"],
"match": "lt"
}
]
}
}
# NULL 值查询
{
"criteria": {
"match": "AND",
"children": [
{
"name": "openToPublic",
"value": [],
"match": "is_null"
}
]
}
}
# 复杂查询
{
"criteria": {
"match": "OR",
"children": [
{
"name": "openToPublic",
"value": [],
"match": "is_null"
}
{
"match": "AND",
"children": [
{
"name": "cataTitle",
"value": ["%BUSINESS%"],
"match": "like"
},
{
"name": "cataId",
"value": ["1","2","3"],
"match": "in"
}
]
}
]
}
}
等效 sql 如下
openToPublic is null or ( cataTitle like '%BUSINESS%' and cataId in ("1","2","3"))
# 结果集动态参数查询
{
"criteria": {
"match": "AND",
"children": [
{
"name": "cataId",
"value": [1565],
"match": "eq"
}
]
},
"paramMap": {
"status": "1"
}
}
有动态参数的条件查询的入参为 criteria、paramMap,他们之间的关系为AND。 其中paramMap为动态参数集合,其中“status” 为变量,是授权服务时配置的动态参数名称。
# 错误码说明
| 错误代码 | 错误信息 | 详细描述 |
|---|---|---|
| 1000002 | UNAUTHORIZED | 未授权 |
| 1100003 | ACCESS_DENY | 授权无效 |
| 2000001 | INVALID_SERVICE | 非法服务 |
| 2000002 | INVALID_PARAM | 非法参数 |