通过数据源封装数据API时,在某些业务场景下,需要设置API的请求参数为选填参数。当开发人员设置API的请求参数为选填参数后,调用方即可在调用API时自行选择是否要传入具体的请求参数值,实现更灵活的查询方式。本文将为您介绍如何在不同的API模式下,实现API请求参数的选填设置。

背景信息

本文将以ods_user_info_d用户信息表为例,表结构如下:
字段名称字段类型描述
uidINT用户id
genderSTRING性别
age_rangeSTRING年龄
zodiacSTRING星座
在本例中,将把uid设置为必填的请求参数,gender设置为选填的请求参数。

向导模式

  1. 进入数据服务页面
  2. 鼠标悬停至添加图标,单击新建API > 生成API
  3. 生成API对话框中,选择API模式向导模式,配置各项参数后,单击确定
    各参数配置详情请参见通过向导模式生成API
  4. 进入API的编辑页面,在选择表区域选择目标数据源及数据表。
  5. 选择参数区域勾选目标请求参数。
    选择参数
  6. 在API编辑页面的右侧导航栏中,单击请求参数
    进入请求参数的详细设置面板,在请求参数的列表中,对目标请求参数勾选是否必填的配置项,如下图所示:设置
    • 勾选:表示调用API时必须对参数传入具体的值,否则将会出现参数校验异常,导致API调用失败的问题。
    • 不勾选:表示调用API时允许对参数自行选择传入或者不传入具体的值。当不传值时,该请求参数将不会作为查询条件进行查询。
  7. 调用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;

脚本模式

说明
  • 基础SQL无法实现请求参数的选填逻辑,如果在基础SQL请求参数的详细设置面板中取消勾选了是否必填配置项,则调用API时:
    • 若请求参数传入值,将按照“请求参数 = 具体值”进行查询。
    • 若请求参数未传值,将按照“请求参数 = null”进行查询。
  • 高级SQL可以实现请求参数的选填逻辑,因此,如需通过脚本模式设置请求参数选填,请选择高级SQL。
  1. 进入数据服务页面
  2. 鼠标悬停至添加图标,单击新建API > 生成API
  3. 生成API对话框中,选择API模式脚本模式。配置各项参数后,单击确定
    各参数配置详情请参见通过脚本模式生成API
  4. 进入API的编辑页面,在选择表区域选择目标数据源及数据表。
  5. 编写查询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>
  6. 在API编辑页面的右侧导航栏中,单击请求参数
    进入请求参数的详细设置面板,在请求参数的列表中,对目标请求参数勾选是否必填的配置项,如下图所示:参数勾选
  7. 调用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;