数据API注册/编辑

·          API注册时,填写的请求路径不允许和系统中已存在的业务接口路径重复,否则访问的时候会发生错误,如/error/success等。

·          DLH数据源注册时,数据库需选择default,否则在获取数据模式时会失败。

·          用户在调用注册成功的数据API时,默认最多能获取10万条结果。若需要返回更多结果可修改后台配置文件,具体修改方式参见如何修改数据API最大返回结果数

·          数据API注册时,如果发布的表字段中存储有大文件,当用户访问该数据API时,由于文件较大,可能存在请求响应过慢的问题。所以为了避免影响用户正常使用API,不建议开放此类表字段。

 

数据API通过向导式的设计将数据库表里字段开放出去,以标准restful接口的形式对外提供。

  1. 在服务集成模块下选择[API工厂/API管理],进入API管理页面。

  1. 在页面顶部导航栏中选择工作空间,API管理页面显示对应工作空间下的API信息。

  1. API管理页面,单击<API注册>按钮,弹出API设计-类型选择窗口,选择“数据API”,进入数据API设计页面,用户可根据实际需要进行设计。

  1. 如果需要修改已创建好的数据API,可单击API列表中“更多”下拉框中的<编辑>按钮进行修改。

  1. 配置基本属性:

  1. 参数配置:

用户自定义SQL语句时,可根据实际情况配置参数是否必填,或者选择模糊查询。常见情况举例如下:

select id, name from table where id =:id

 

SELECT

  "ability_base"."id",

  "ability_base"."ability_name",

  "ability_base"."ability_desc",

  "ability_base"."ability_status",

  "ability_base"."create_by",

  "ability_base"."create_time"

FROM

  "public"."ability_base"

where

  1 = 1

  and (:id is null

  or "ability_base"."id" = :id)

  and (:name is null

  or "ability_base"."ability_name" = :name)

  and (cast(:time as timestamp) is null

  or "ability_base"."create_time" > :time)

  and (:bool01 is null

  or "ability_base"."bool01" = :bool01)

  and (cast(:date01 as date) is null

  or "ability_base"."date01" >= :date01)

  and (cast(:dtime01 as time) is null

  or "ability_base"."time01" >= :dtime01)

 

SELECT

  "ability_base"."id",

  "ability_base"."ability_name",

  "ability_base"."ability_desc",

  "ability_base"."ability_status",

  "ability_base"."create_by",

  "ability_base"."create_time"

FROM

  "public"."ability_base"

where

  1 = 1

  and (cast(:id as int) is null

  or "ability_base"."id" = :id)

  and (cast(:name as varchar) is null

  or "ability_base"."ability_name" = :name)

  and (cast(:time as timestamp) is null

  or "ability_base"."create_time" > :time)

  and (cast(:bool01 as boolean) is null

  or "ability_base"."bool01" = :bool01)

  and (cast(:date01 as date) is null

  or "ability_base"."date01" >= :date01)

  and (cast(:dtime01 as time) is null

  or "ability_base"."time01" >= :dtime01)

 

select

 "time_table"."id" as "id",

 "time_table"."nowtime" as "nowtime",

from

 "H3C"."time_table"

where 1 = 1 and (COALESCE(:id) is null or "time_table"."id" in (:id))

 

select id, ability_name from ability_base where ability_name like concat('%',:name,'%')

如果某种数据源concat方法不支持三个参数,Vertica,可参考如下写法

select id, ability_name from ability_base where REGEXP_LIKE ("ability_name",: name)

表结构示例如下:

CREATE TABLE array_demo

(

id BIGINT,

name STRING,

pets ARRAY <STRING>,

employee_info STRUCT < employer: STRING, id: BIGINT, address: STRING >,

ancestors MAP < STRING, STRING >

)

STORED AS PARQUET;

 

ARRAY类型查询语句示例:

SELECT id, name, pets.pos, pets.item

FROM array_demo, array_demo.pets;

 

STRUCT类型查询语句示例:

SELECT id, name, employee_info.employer,employee_info.address,employee_info.id as employee_info_id

FROM array_demo ;

 

MAP类型查询语句示例:

SELECT id, name, ancestors.key, ancestors.value

FROM array_demo, array_demo.ancestors ;

 

 

MySQL

select id, name from table limit :pageSize offset :pageNum

Oracle

SELECT Id,name FROM (SELECT ROWNUM rm ,a.*  FROM T_A a WHERE  ROWNUM <=:pagenum * :pagesize) page WHERE page.rm >=(:pagenum-1)*:pagesize+1

PostgreSQL

select id, name from table limit :pageSize offset :pageNum

Vertica

select id, name from table limit :pageSize offset :pageNum

达梦:

select id, name from table limit :pageSize offset :pageNum

Impala

select id, name from table limit :pageSize offset :pageNum

 

  1. 在预览页面,用户可以查看已填写API的基本信息、参数配置信息以及数据来源,如果没有问题就可以单击<保存>,这样就可以完成数据API的注册,保存后的APIAPI列表中的状态为“待测试”。

  1. 用户在API注册的过程中,可以随时单击页面右下角的<保存为草稿>按钮,将正在编辑的API注册保存为草稿,方便用户下次在此基础上继续进行编辑,保存为草稿后,APIAPI列表中的状态为“草稿”。