千家信息网

怎样进行Kylin Restful API的使用

发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,怎样进行Kylin Restful API的使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。说明:官网上关于Restful API
千家信息网最后更新 2024年11月17日怎样进行Kylin Restful API的使用

怎样进行Kylin Restful API的使用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

说明:官网上关于Restful API Response部分介绍倒是很详细,但Request部分却很简单,有些没有举例说明,笔者在进行restful接口开发时刚开始很是懵逼,而我们当然更在意如何发请求去访问Kylin,这样拿到的Response也才有意义。这篇文章着重举例说明下如何使用Restful API访问Kylin(结构与官网保持一致)。

1. Query | Authentication


官网:有举例。

API说明:进行认证。

笔者刚开始这里有点晕,一时没看懂它的权限验证是什么意思。这里简单说明一下:

第一次访问时:

curl -c /path/to/cookiefile.txt -X POST \

-H "Authorization: Basic XXXXXXXXX" \

-H 'Content-Type: application/json' \

http://:/kylin/api/user/authentication

第二次访问时:

curl -b /path/to/cookiefile.txt -X PUT \

-H 'Content-Type: application/json' \

-d '{"startTime":'1423526400000', \

"endTime":'1423526400', \

"buildType":"BUILD"}' \

http://:/kylin/api/cubes/your_cube/build

这里有点像kerberos认证:先为每个用户生成一个keytab文件,而后用户就可以通过这个keytab文件去进行登录访问,当然原理是不一样的。第一次访问Kylin时,要进行认证操作,通过Authorization头,传入一个base64编码后的值,通常是对"用户名:密码"进行编码后传入,然后会生成一个cookie文件保存在本地,即cookiefile.txt 。当第二次登录时,不必再进行认证,只需通过指定这个cookie文件即可访问Kylin(指定Authorization头当然也可以访问Kylin)。

Authorization值可通过如下代码获取:

byte[] key = ("ADMIN:KYLIN").getBytes();

encoding = new sun.misc.BASE64Encoder().encode(key);

可得到:encoding = "QURNSU46S1lMSU4="

然后通过 -H "Authorization: Basic QURNSU46S1lMSU4=" 进行访问

2. Query | Query

官网:有举例。

API说明:执行所有查询语句。

3. Query | List queryable tables

API说明:列出指定项目下可查询的表

API举例说明:

curl -X GET -H "Content-Type: application/json" \

-H "Authorization: Basic QURNSU46S1lMSU4=" \

http://:/kylin/api/tables_and_columns?project=projectName

4. CUBE | List cubes

API说明:列出符合条件的cube信息

API举例说明:

a.列出所有项目所有的cube信息(limit=15)

curl -vi -X GET \

-H "Authorization: Basic QURNSU46S1lMSU4=" \

-H "Content-Type: application/json" \

http://:/kylin/api/cubes?limit=15&offset=0

b.列出所有项目下cubeName=xxxx的cube信息

curl -vi -X GET \

-H "Authorization: Basic QURNSU46S1lMSU4=" \

-H "Content-Type: application/json" \

http://:/kylin/api/cubes?cubeName=xxxx&limit=15&offset=0

注:cubeName参数必须写在limit和offset前,否则失效

c.列出指定项目下所有的cube信息

curl -vi -X GET \

-H "Authorization: Basic QURNSU46S1lMSU4=" \

-H "Content-Type: application/json" \

http://:/kylin/api/cubes?projectName=xxxx&limit=15&offset=0

注:projectName参数必须写在limit和offset前,否则失效

d.cubeName与projectName为可选项,哪个在前哪个生效

curl -vi -X GET \

-H "Authorization: Basic QURNSU46S1lMSU4=" \

-H "Content-Type: application/json" \

http://:/kylin/api/cubes?cubeName=xxxx& \

projectName=xxxx&limit=15&offset=0

5. CUBE | Get Cube

API说明:获取指定cube信息

API举例说明:

curl -vi -b /home/cookiefile.txt -X GET \

-H "Content-Type: application/json" \

http://:/kylin/api/cubes?cubeName=xxxx

6. CUBE | Get cube descriptor

API说明:获取指定cube的描述信息

API举例说明:

curl -vi -b /home/cookiefile.txt -X GET \

-H "Content-Type: application/json" \

http://:/kylin/api/cube_desc/{cubeName}


7. CUBE | Get data model

API说明:获取指定model的信息

API举例说明:

curl -vi -b /home/cookiefile.txt -X GET \

-H "Content-Type: application/json" \

http://:/kylin/api/model/{modelName}

8. CUBE | Build cube

API说明:构建cube

API举例说明:官网有案例

注:PUT /kylin/api/cubes/{cubeName}/build与PUT /kylin/api/cubes/{cubeName}/rebuild测试均可。

9. CUBE | Enable Cube

API说明:使已构建的cube不可用

API举例说明:


curl -X PUT \

-H "Authorization: Basic QURNSU46S1lMSU4=" \

-H 'Content-Type: application/json' \

http://:/kylin/api/cubes/{cubeName}/enable


10. CUBE | Disable Cube

API说明:恢复不可用cube为可用

API举例说明:


curl -X PUT \

-H "Authorization: Basic QURNSU46S1lMSU4=" \

-H 'Content-Type: application/json' \

http://:/kylin/api/cubes/{cubeName}/disable


11. CUBE | Purge Cube

API说明:清空cube所有数据

API举例说明:

curl -X PUT \

-H "Authorization: Basic QURNSU46S1lMSU4=" \

-H 'Content-Type: application/json' \

http://:/kylin/api/cubes/{cubeName}/purge

注:purge前必须先disable,purge后只是删除了元数据,表并没有被删除。

12. 删除无用的segment

API说明:官网上没有,Google好久才找到,当错误build一个cube时,可使用此API。

API举例说明:

curl -vi -b /home/cookiefile.txt \

-XDELETE -H "Content-Type: application/json" \

关于怎样进行Kylin Restful API的使用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

0