历史版本15 :数据查询API-参数为空查询全部 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

FineDataLink版本
功能变动
4.0.28

数据发布 API 参数支持配置必填/非必填

1.2 应用场景

用户想要在发布 API 时,对 API 取数逻辑进行设置:未传指定参数,则省略此参数对应的查询条件。即实现想查询全部数据时,不传对应参数;要查询其他非空值数据时,正常传参。

18.png

2. 操作步骤编辑

示例:将S订单中的数据发布为 API。希望在取数时不传递参数「area」,则取出全部的数据,当正常传递「area」参数,则查询其他非空值数据。

2.1 新建API

进入「数据服务」,点击「新建>API」,进入 API 发布编辑界面。如下图所示:

11.png

2.2 输入API信息

设置 API 名称;请求方式选择 GET;设置路径、超时时间、绑定应用;API 描述可为空。

若此时没有创建应用,可不添加应用,在完成 API 创建后,在应用列表中绑定 API ,详情参见:绑定API至应用绑定应用步骤必做,否则后续无法调用该 API 。

各设置项说明请参见:发布API概述

12.png

注:若用户想要对发布的API进行层级设计,可以使用连字符(-)、正斜杠(/)等符号设计API路径,如下图所示:

13.png

2.3 设置发布内容及参数

1)设置界面如下图所示:

SELECT * FROM S订单 WHERE 1=1 AND CASE WHEN '${area}' != '' THEN 货主地区='${area}' ELSE 1=1 END

14.png

各设置项说明如下:

设置项
说明
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 时不引用参数,默认取出所有的数据,因此取消开启「参数必填」按钮

返回值配置

点击「获取」按钮,可输入参数值查询数据

16.png

2)点击下一步」进入「预览测试」界面,点击测试调用按钮,可看到参数为空成功查询全部数据。如下图所示:

15.png

3)点击生成API按钮。

2.4 API上线

在右上角点击「上线」,即可发布 API,如下图所示:

17.png

3. 后续步骤编辑

1)若用户在发布时没有将 API 添加至指定应用,也可以在 API应用管理 中将上线的 API 通过应用进行管理,以便能够被调用。

2)若需要使用已经发布的 API,详情参见:使用数据服务发布的API(GET 请求)

可看到参数为空,即不传对应参数 area 时,取全部的数据,如下图所示:

18.png

对已经发布的 API 进行管理,详情参见:服务运维