通过数据源封装数据API时,在某些业务场景下,需要设置API的请求参数为选填参数。当开发人员设置API的请求参数为选填参数后,调用方即可在调用API时自行选择是否要传入具体的请求参数值,实现更灵活的查询方式。本文将为您介绍如何在不同的API模式下,实现API请求参数的选填设置。
背景信息
本文将以
在本例中,将把uid设置为必填的请求参数,gender设置为选填的请求参数。ods_user_info_d
用户信息表为例,表结构如下:字段名称 | 字段类型 | 描述 |
---|---|---|
uid | INT | 用户id |
gender | STRING | 性别 |
age_range | STRING | 年龄 |
zodiac | STRING | 星座 |
向导模式
- 进入数据服务页面。
- 鼠标悬停至图标,单击 。
- 在生成API对话框中,选择API模式为向导模式,配置各项参数后,单击确定。各参数配置详情请参见通过向导模式生成API。
- 进入API的编辑页面,在选择表区域选择目标数据源及数据表。
- 在选择参数区域勾选目标请求参数。
- 在API编辑页面的右侧导航栏中,单击请求参数。进入请求参数的详细设置面板,在请求参数的列表中,对目标请求参数勾选是否必填的配置项,如下图所示:
- 勾选:表示调用API时必须对参数传入具体的值,否则将会出现参数校验异常,导致API调用失败的问题。
- 不勾选:表示调用API时允许对参数自行选择传入或者不传入具体的值。当不传值时,该请求参数将不会作为查询条件进行查询。
- 调用API。
- 情况一:请求参数uid、gender均传入具体值,执行查询如下:
SELECT uid, gender, age_range, zodiac FROM ods_user_info_d WHERE uid = 0016359810821 AND gender = '女';
- 情况二:请求参数uid传入具体值,请求参数gender未传值,执行查询如下:
SELECT uid, gender, age_range, zodiac FROM ods_user_info_d WHERE uid = 0016359810821;
- 情况一:请求参数uid、gender均传入具体值,执行查询如下:
脚本模式
说明
- 基础SQL无法实现请求参数的选填逻辑,如果在基础SQL请求参数的详细设置面板中取消勾选了是否必填配置项,则调用API时:
- 若请求参数传入值,将按照“请求参数 = 具体值”进行查询。
- 若请求参数未传值,将按照“请求参数 = null”进行查询。
- 高级SQL可以实现请求参数的选填逻辑,因此,如需通过脚本模式设置请求参数选填,请选择高级SQL。
- 进入数据服务页面。
- 鼠标悬停至图标,单击 。
- 在生成API对话框中,选择API模式为脚本模式。配置各项参数后,单击确定。各参数配置详情请参见通过脚本模式生成API。
- 进入API的编辑页面,在选择表区域选择目标数据源及数据表。
- 在编写查询SQL区域通过Mybatis标签语法实现请求参数的设置,示例如下:
SELECT uid, gender, age_range, zodiac FROM ods_user_info_d <where> <if test='gender!=null'> gender = ${gender} </if> and uid = ${uid} </where>
- 在API编辑页面的右侧导航栏中,单击请求参数。进入请求参数的详细设置面板,在请求参数的列表中,对目标请求参数勾选是否必填的配置项,如下图所示:
- 调用API。
- 情况一:请求参数uid、gender均传入具体值,执行查询如下:
SELECT uid, gender, age_range, zodiac FROM ods_user_info_d WHERE uid = 0016359810821 AND gender = '女';
- 情况二:请求参数uid传入具体值,请求参数gender未传值,执行查询如下:
SELECT uid, gender, age_range, zodiac FROM ods_user_info_d WHERE uid = 0016359810821;
- 情况一:请求参数uid、gender均传入具体值,执行查询如下: