首页 存档 技术 查看内容

Kylin的RESTful API使用

2018-3-30 13:00 |来自: 互联网 715 0

摘要: 目前根据Kylin的官方文档介绍,Kylin的认证是basic authentication,加密算法是Base64。在POST的header进行用户认证: 执行: curl -c cookiefile.txt -X POST -H "Authorization: Basic QURNSU46S1lMSU4="-H 'C ...


目前根据Kylin的官方文档介绍,Kylin的认证是basic authentication,加密算法是Base64。在POST的header进行用户认证:

执行:

curl -c cookiefile.txt -X POST -H "Authorization: Basic QURNSU46S1lMSU4="-H 'Content-Type: application/json' http://GPMASTER:7070/kylin/api/user/authentication

注:

ADMIN:KYLIN使用Base64编码后结果为:

QURNSU46S1lMSU4=


返回结果:


{"userDetails":{"password":null,"username":"ADMIN","authorities":[{"authority":"ROLE_ADMIN"},{"authority":"ROLE_ANALYST"},{"authority":"ROLE_MODELER"}],"accountNonExpired":true,"accountNonLocked":true,"credentialsNonExpired":true,"enabled":true}}

注:

  • -c:后面接的是cookie写入的文件

  • -H: Custom header topass to server

  • -X POST: Specify request command to use

cat cookiefile.txt

  • # Netscape HTTP Cookie File

  • # http://curl.haxx.se/rfc/cookie_spec.html

  • # This file was generated by libcurl! Editat your own risk.

  • #HttpOnly_GPMASTER FALSE /kylin/ FALSE 0 JSESSIONID 52052E82B421E753D484031F534D63F4

在认证完成之后,可以复用cookie文件(不再需要重新认证),向Kylin发送GET或POST请求,比如,查询cube的信息:

curl -b cookiefile.txt -H 'Content-Type:application/json' http://GPMASTER:7070/kylin/api/cubes/kylin_sales_cube

若要向Kylin发送sql query,则POST请求中的data应遵从json规范(MySQL.json):

{

"sql":"select * from KYLIN_SALES",

"offset":0,

"limit":500,

"acceptPartial":false,

"project":"learn_kylin"

}

其中,offset为sql中相对记录首行的偏移量,limit为**记录条数;二者在后台处理时都会拼接到sql中去。发送sql query的curl命令:

curl -b cookiefile.txt -X POST -H'Content-Type: application/json' -d '{"sql":"select part_dt,sum(price) as total_selled, count(distinct seller_id) as sellers fromkylin_sales group by part_dt", "offset":0, "limit":500,"acceptPartial":false, "project":"learn_kylin"}' http://GPMASTER:7070/kylin/api/query

使用json格式的文件来执行获取数据:

curl -b cookiefile.txt -X POST -H'Content-Type: application/json' -d @mysql.json http://GPMASTER:7070/kylin/api/query


附录1:


1.Base64编码说明


Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'='。

为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。


2. Base64编码表



附录2:


使用Java代码方式实现Base64的编码和解码:

package com.pipeapple.kylin;

import java.io.UnsupportedEncodingException;

import org.apache.commons.codec.binary.Base64;

public class Base64Demo {

public static void main(String[] args){

String encode_str = "ADMIN:KYLIN";

String decode_str = "QURNSU46S1lMSU4=";

try{

// 编码

byte[] encodeBase64 = Base64.encodeBase64(encode_str.getBytes("UTF-8"));

System.out.println("ENCODE RESULT: " new String(encodeBase64));

// 解码

byte[] decodeBase64 = Base64.decodeBase64(decode_str.getBytes("UTF-8"));

System.out.println("DECODE RESULT: " new String(decodeBase64));

} catch(UnsupportedEncodingException e){

e.printStackTrace();

}

}

}

运行结果为:

ENCODE RESULT: QURNSU46S1lMSU4=

DECODE RESULT: ADMIN:KYLIN

本文来自CSDN社区专家蒋守壮,《基于Apache Kylin构建大数据分析平台》作者,目前专注于大数据和云计算方面的研究。

本文转载于微信公众号: 程序人生(coder_life),更多微信文章请扫描关注公众号:

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部