最新历史版本 :数据查询API-参数为空查询全部 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:
icon提示:
本文方案适用于 4.2.6.2 及之后版本;4.2.6.2 之前版本,请参见:历史版本

目录:

1. 概述编辑

1.1 版本

FineDataLink版本
功能变动
4.0.28

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

1.2 应用场景

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

76.png

2. 操作步骤编辑

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

2.1 新建API

进入数据服务,点击新建>接口服务,输入接口服务的名称后,点击确定按钮。如下图所示:

71.png

2.2 设置 API 信息

2.2.1 服务内容(数据查询)

设置界面如下图所示:

MySQL 数据库(本文示例):

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

Oracle 数据库(用户根据实际情况进行修改):

SELECT * FROM "S_ORDER" WHERE 货主地区 = (case when nvl('${area}','*') = '*' THEN 货主地区 else '${area}' end)

SQLServer 数据库(用户根据实际情况修改):

SELECT * FROM [dbo].[S_ORDER] WHERE 1=1   AND ('${area}' = '' OR 货主地区 = '${area}')

PostgreSQL 数据库(用户根据实际情况修改):

SELECT * FROM "public"."S_ORADER" WHERE '${area}' = '' OR 货主地区 = '${area}'

72.png

各设置项说明如下:

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

设置项
说明
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 防注入 中将转义字符单引号取消选择

分页查询

关闭分页查询按钮,调用生成的 API 后返回数据不进行分页

参数必填按钮

本文示例中希望调用 API 时不引用参数,默认取出所有的数据,因此关闭 area 参数的必填按钮

2.2.2 API接口配置

1)请求方式选择 POST;路径设置为 demo(支持自定义)。

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

请求 Body 格式设置为 application/json。如下图所示:

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

73.png

2)点击右下角的测试调用按钮,可调试 API;area 参数值设置为空,查询全部数据。如下图所示:

75.png

3)点击保存并上线按钮。

3. 后续步骤编辑

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

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

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

76.png

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