1. 概述
1.1 版本
FineDataLink版本 | 功能变动 |
---|---|
4.0.28 | 数据发布 API 参数支持配置必填/非必填 |
1.2 应用场景
用户想要在发布 API 时,对 API 取数逻辑进行设置:未传指定参数,则省略此参数对应的查询条件。即实现想查询全部数据时,不传对应参数;要查询其他非空值数据时,正常传参。
2. 操作步骤
示例:将「S订单」中的数据发布为 API。希望在取数时不传递参数「area」,则取出全部的数据,当正常传递「area」参数,则查询其他非空值数据。
2.1 新建API
进入「数据服务」,点击「新建>API」,进入 API 发布编辑界面。如下图所示:
2.2 输入API信息
设置 API 名称;请求方式选择 GET;设置路径、超时时间、绑定应用;API 描述可为空。
若此时没有创建应用,可不添加应用,在完成 API 创建后,在应用列表中绑定 API ,详情参见:绑定API至应用;绑定应用步骤必做,否则后续无法调用该 API 。
各设置项说明请参见:发布API概述
注:若用户想要对发布的API进行层级设计,可以使用连字符(-)、正斜杠(/)等符号设计API路径,如下图所示:
2.3 设置发布内容及参数
1)设置界面如下图所示:
SELECT * FROM S订单 WHERE 1=1 AND CASE WHEN '${area}' != '' THEN 货主地区='${area}' ELSE 1=1 END
各设置项说明如下:
设置项 | 说明 |
---|---|
SQL语句 | 1)SQL 语句中设置参数 area,该 API 发布后,可使用参数查询「S订单」表中的数据 2)示例为 MySQL 数据库语法,不同数据库的语法不同,用户可根据实际使用数据库类型修改语法 3)若 SQL 语句中参数加上''(本文示例写法),调用 API 时,参数值就不用带'' 注:此时若调用 API ,则SQL 语句会将默认值空带入,即执行SELECT * FROM S订单 WHERE 1=1 AND CASE WHEN '' != '' THEN 货主地区='' ELSE 1=1 END,即查询出全量数据 若设置默认值为 NULL 时,则SQL 语句会将默认值 NULL 带入,即执行 SELECT * FROM S订单 WHERE 1=1 AND CASE WHEN 'NULL' != '' THEN 货主地区='NULL' ELSE 1=1 END,此时的执行结果取决于数据库读取情况 若 SQL 语句中参数不带'',即:SELECT * FROM S订单 WHERE 1=1 AND CASE WHEN ${area} != '' THEN 货主地区=${area} ELSE 1=1 END,则调用 API 时,参数值需要带上'' 4)4.0.28 之前版本:为了解决 SQL 防注入问题,FineDataLink 将参数中包含的单引号默认添加进防注入限制转义字符中,也就是默认 SQL 语句中参数中的数据不允许加单引号,需要在查询预览的时候手动给参数默认值加引号进行预览。因此若用户需要 SQL 语句中的参数需要有引号,则需要在 SQL 防注入 中将转义字符单引号取消选择 |
请求参数配置 | 自动识别查询 SQL 设置的参数名,可以定义该参数的参数类型 由于此时希望实现使用 API 时不引用参数,默认取出所有的数据,因此取消开启「参数必填」按钮 |
返回值配置 | 点击「获取」按钮,可输入参数值查询数据: |
2)点击「下一步」进入「预览测试」界面,点击「测试调用」按钮,可看到参数为空成功查询全部数据。如下图所示:
3)点击生成「API」按钮。
2.4 API上线
在右上角点击「上线」,即可发布 API,如下图所示:
3. 后续步骤
1)若用户在发布时没有将 API 添加至指定应用,也可以在 API应用管理 中将上线的 API 通过应用进行管理,以便能够被调用。
2)若需要使用已经发布的 API,详情参见:使用数据服务发布的API(GET 请求)
可看到参数为空,即不传对应参数 area 时,取全部的数据,如下图所示:
对已经发布的 API 进行管理,详情参见:服务运维