Rest接口操作Kylin
来源:互联网 发布:需要文章源码怎么写 编辑:程序博客网 时间:2024/06/07 15:36
由于官方网站的介绍中,涉及的Rest接口较少,现通过官方提供在github上的源码包,使用一些其他实用的Rest接口。
找到Kylin Rest源码:https://github.com/apache/kylin/tree/master/server-base
到org.apache.kylin.rest.controller目录下查找对应的controller类
例如:org.apache.kylin.rest.controller.CubeController
@Controller
@RequestMapping(value = "/cubes")
public class CubeController extends BasicController {
...
@RequestMapping(value = "/{cubeName}/purge", method = { RequestMethod.PUT })
@ResponseBody
public CubeInstance purgeCube(@PathVariable String cubeName) {
try {
CubeInstance cube = cubeService.getCubeManager().getCube(cubeName);
if (cube == null) {
throw new InternalErrorException("Cannot find cube " + cubeName);
}
return cubeService.purgeCube(cube);
} catch (Exception e) {
String message = "Failed to purge cube: " + cubeName;
logger.error(message, e);
throw new InternalErrorException(message + " Caused by: " + e.getMessage(), e);
}
}
...
}
purge(清空表)的操作Rest为: localhost:7070/kylin/api/cubes/TestCube/purge
此处的
/cubes 为本类的@RequestMapping(value= "/cubes")
/TestCube/purge 即为@RequestMapping(value = "/{cubeName}/purge")
所传参数@PathVariable String cubeName,对应的TestCube。
再找一个,这次以Cube的controller为例:org.apache.kylin.rest.controller.CubeController
@Controller
@RequestMapping(value = "/cubes")
public class CubeController extends BasicController {
...
@RequestMapping(value = "/{cubeName}/build", method = { RequestMethod.PUT })
@ResponseBody
public JobInstance build(@PathVariable String cubeName, @RequestBody JobBuildRequest req) {
return rebuild(cubeName, req);
}
...
}
可以简单看出这个build cube的Rest操作为:localhost:7070/kylin/api/cubes/TestCube/build
但是所传参数中有个@RequestBody
进入JobBuildRequest类看看此类长什么样
package org.apache.kylin.rest.request;
public class JobBuildRequest {
private long startTime;
private long endTime;
private String buildType;
private boolean force;
...
}
可以看出我们需要在参数带上这几个
具体在网页或者Rest Client工具的操作就不做演示了,设置好对应的请求类型以及参数即可
下面贴上自己的演示代码(build)
String obj = "{\"startTime\":\"" + starttime +"\","
+ "\"endTime\":\""+ endtime + "\","
+ "\"buildType\":\"BUILD\"}";
String method = "put";
String url = "http://"+host+":"+port+"/kylin/api/cubes/"+cubeName+"/build";
URL target = new URL(url);
conn = (HttpURLConnection) target.openConnection();
conn.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
conn.addRequestProperty("Content-Type", "application/json;charset=UTF-8");
String encoding = new sun.misc.BASE64Encoder().encode((userName+":"+password).getBytes());
conn.setRequestProperty("Authorization", "Basic " + encoding);
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod(method);
conn.setRequestProperty("Content-Length", paramObj.toString().getBytes("UTF-8").length + ""); //设置文件请求的长度
out = conn.getOutputStream();
out.write(paramObj.toString().getBytes());
out.flush();
BufferedReader brd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sbout = new StringBuilder();
String line;
while((line = brd.readLine()) != null){
sbout.append(line);
}
return sbout.toString();
conn.setConnectTimeout(timeout);
out.close();
conn.disconnect();
建立Cube:
Rest地址:localhost:7070/kylin/api/cubes
请求类型:POST
参数:
project
cubeName
cubeDescData
cubeDescData : 在页面版上,通过编辑Cube的json获取
建立Model
Rest地址:localhost:7070/kylin/api/models
请求类型:POST
参数:
project
modelName
modelDescData
modelDescData :
- 在页面版上,建立完成Model后,log会打印出相应json代码
- localhost:7070/kylin/api/models?modelName=TestModel GET
注意:需要把json中的 " 改成 /"
贴上示例代码:
public class KylinRestTest {
public static String call(final String URL, final String METHOD) {
String result = null;
HttpURLConnection conn = null;
try {
URL target = new URL(URL);
conn = (HttpURLConnection) target.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod(METHOD);
conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
String username = "ADMIN";
String password = "KYLIN";
String input = username + ":" + password;
String encoding = new sun.misc.BASE64Encoder().encode(input.getBytes());
conn.setRequestProperty("Authorization", "Basic " + encoding);
//
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
// conn.connect();
// String obj = "{\"startTime\":\"0\",\"endTime\":\"1472832000000\",\"buildType\":\"BUILD\"}";
// String obj = "{\"startTime\":\"1472832000000\",\"endTime\":\"1473177600000\",\"buildType\":\"BUILD\"}";
// String obj = "{\"startTime\":\"1472832000000\",\"endTime\":\"1473177600000\",\"buildType\":\"BUILD\"}";
String obj = "{\"startTime\":\"1475020800000\",\"endTime\":\"1475193600000\",\"buildType\":\"BUILD\"}";
// String obj = "{\"startTime\":\"1473177600000\",\"endTime\":\"1473465600000\",\"buildType\":\"REFRESH\"}";
// String obj = "{\"startTime\":\"1472832000000\",\"endTime\":\"1473177600000\",\"buildType\":\"MERGE\"}";
conn.setRequestProperty("Content-Length", obj.toString().getBytes().length + ""); //设置文件请求的长度
OutputStream out = conn.getOutputStream();
out.write(obj.toString().getBytes());
out.flush();
out.close();
// conn.setRequestProperty("startTime", "0");
// conn.setRequestProperty("endTime", "1472832000000");
// conn.setRequestProperty("buildType", "BUILD");
if (200 != conn.getResponseCode()) {
// throw new RuntimeException("failed, error code is " + conn.getResponseCode() + "\n" + conn.getErrorStream().toString() + "\n" + conn.getResponseMessage());
// throw new RuntimeException(conn.getErrorStream().toString());
// throw new RuntimeException(conn.getResponseMessage());
// throw new RuntimeException("failed, error code is " + conn.getResponseCode());
System.out.println(conn.getErrorStream());
}
byte[] temp = new byte[conn.getInputStream().available()];
if (conn.getInputStream().read(temp) != -1) {
result = new String(temp);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
conn.disconnect();
}
return result;
}
public static void main(String[] args) {
// System.out.println(call("http://192.168.88.215:7070/kylin/api/user/authentication", "POST"));
// System.out.println(call("http://192.168.88.215:7070/kylin/api/cubes?cubeName=test2MC&limit=15&offset=0", "GET"));
// System.out.println(call("http://192.168.88.215:7070/kylin/api/jobs/f7ffbe3d-7907-45f2-b815-dcca831f08b5", "GET"));
// System.out.println(call("http://192.168.88.215:7070/kylin/api/cubes/test2MC/build", "PUT"));
System.out.println(call("http://192.168.88.215:7070/kylin/api/cubes/test2MC/build", "PUT"));
}
}
0 0
- Rest接口操作Kylin
- REST接口
- rest接口
- REST接口
- Android rest接口
- hbase rest接口
- REST接口设计风格
- REST接口设计规范
- REST接口设计
- REST 应用编程接口
- REST接口规范
- myeclipse添加rest接口
- 访问rest接口
- Kylin
- Kylin
- kylin
- Kylin
- Spring Boot实战之Rest接口开发及数据库基本操作
- MAVEN 配置
- Spring自定义装配
- 进阶篇:3.6)砂型铸造件设计指南
- 关于fgets函数的获取要点
- OpenCV 中Mat对象的获取ROI区域自图像的问题
- Rest接口操作Kylin
- spring和spring mvc 使用配置----初级配置
- “个性化视频推荐”算法的Storm实现方案
- SNMP网络管理协议
- JS之面向对象
- 自建 webapi rest
- CentOS7 Zookeeper3.4.9集群部署
- LNMP(linux+nginx+mysql+php)网站服务器架构
- Unity3D GPS获取玩家地理位置