RESTful Connector

为支持各种不同类型平台的开发,TDengine提供符合REST设计标准的API,即RESTful API。为最大程度降低学习成本,不同于其他数据库RESTful API的设计方法,TDengine直接通过HTTP POST 请求BODY中包含的SQL语句来操作数据库,仅需要一个URL。

HTTP请求格式

http://<ip>:<PORT>/rest/sql

参数说明:

IP: 集群中的任一台主机

PORT: 配置文件中httpPort配置项,缺省为6020

例如:http://192.168.0.1:6020/rest/sql 是指向IP地址为192.168.0.1的URL.

HTTP请求的Header里需带有身份认证信息,TDengine支持Basic认证与自定义认证两种机制,后续版本将提供标准安全的数字签名机制来做身份验证。

自定义身份认证信息如下所示(稍后介绍)

Authorization: Taosd <TOKEN>

Basic身份认证信息如下所示

Authorization: Basic <TOKEN>

HTTP请求的BODY里就是一个完整的SQL语句,SQL语句中的数据表应提供数据库前缀,例如<db-name>.<tb-name>。如果表名不带数据库前缀,系统会返回错误。因为HTTP模块只是一个简单的转发,没有当前DB的概念。

使用curl通过自定义身份认证方式来发起一个HTTP Request, 语法如下:

curl -H 'Authorization: Basic <TOKEN>' -d '<SQL>' <ip>:<PORT>/rest/sql

或者

curl -u username:password -d '<SQL>' <ip>:<PORT>/rest/sql

其中,TOKEN为{username}:{password}经过Base64编码之后的字符串, 例如root:taosdata编码后为cm9vdDp0YW9zZGF0YQ==

HTTP返回格式

返回值为JSON格式,如下:

{

"status": "succ",

"head": ["column1","column2", …],

"data": [

["2017-12-12 23:44:25.730", 1],

["2017-12-12 22:44:25.728", 4]

],

"rows": 2

}

说明:

status: 告知操作结果是成功还是失败

head: 表的定义,如果不返回结果集,仅有一列“affected_rows”

data: 具体返回的数据,一排一排的呈现,如果不返回结果集,仅[[affected_rows]]

rows: 表明总共多少行数据

自定义授权码

HTTP请求中需要带有授权码<TOKEN>, 用于身份识别。授权码通常由管理员提供, 可简单的通过发送HTTP GET请求来获取授权码, 操作如下:

curl http://<ip>:6020/rest/login/<username>/<password>

其中, ip是TDengine数据库的IP地址, username为数据库用户名, password为数据库密码, 返回值为JSON格式, 各字段含义如下:

status:请求结果的标志位

code:返回值代码

desc: 授权码

获取授权码示例:

curl http://192.168.0.1:6020/rest/login/root/taosdata

返回值:

{

"status": "succ",

"code": 0,

"desc":

"/KfeAzX/f9na8qdtNZmtONryp201ma04bEl8LcvLUd7a8qdtNZmtONryp201ma04"

}

使用示例

在demo库里查询表t1的所有记录:

curl -H 'Authorization: Basic cm9vdDp0YW9zZGF0YQ==' -d 'select * from demo.t1' 192.168.0.1:6020/rest/sql`

返回值:

{

"status": "succ",

"head": ["column1","column2","column3"],

"data": [

["2017-12-12 22:44:25.728",4,5.60000],

["2017-12-12 23:44:25.730",1,2.30000]

],

"rows": 2

}

创建库demo:

curl -H 'Authorization: Basic cm9vdDp0YW9zZGF0YQ==' -d 'create database demo' 192.168.0.1:6020/rest/sql`

返回值:

{

"status": "succ",

"head": ["affected_rows"],

"data": [[1]],

"rows": 1,

}

其他用法

结果集采用Unix时间戳

HTTP请求URL采用sqlt时,返回结果集的时间戳将采用Unix时间戳格式表示,例如

curl -H 'Authorization: Basic cm9vdDp0YW9zZGF0YQ==' -d 'select * from demo.t1' 192.168.0.1:6020/rest/sqlt

返回值:

{

"status": "succ",

"head": ["column1","column2","column3"],

"data": [

[1513089865728,4,5.60000],

[1513093465730,1,2.30000]

],

"rows": 2

}

结果集采用UTC时间字符串

HTTP请求URL采用sqlutc时,返回结果集的时间戳将采用UTC时间字符串表示,例如

curl -H 'Authorization: Basic cm9vdDp0YW9zZGF0YQ==' -d 'select * from demo.t1' 192.168.0.1:6020/rest/sqlutc

返回值:

{

"status": "succ",

"head": ["column1","column2","column3"],

"data": [

["2017-12-12T22:44:25.728+0800",4,5.60000],

["2017-12-12T23:44:25.730+0800",1,2.30000]

],

"rows": 2

}

重要配置项

下面仅列出一些与RESTFul接口有关的配置参数,其他系统参数请看配置文件里的说明。注意:配置修改后,需要重启taosd服务才能生效

httpIp: 对外提供RESTFul服务的IP地址,默认绑定到0.0.0.0

httpPort: 对外提供RESTFul服务的端口号,默认绑定到6020

httpMaxThreads: 启动的线程数量,默认为2

httpCacheSessions: 缓存连接的数量,并发请求数目需小于此数值的10倍,默认值为100

restfulRowLimit: 返回结果集(JSON格式)的最大条数,默认值为10240

httpEnableCompress: 是否支持压缩,默认不支持,目前TDengine仅支持gzip压缩格式

httpDebugFlag: 日志开关,131:仅错误和报警信息,135:所有,默认131

RESTful Connector相关推荐

  1. 2-TDengine客户端连接,RESTful,JDBC

    [本文正在参与 "拥抱开源 | 涛思数据 TDengine有奖征稿] https://marketing.csdn.net/p/0ada836ca30caa924b9baae0fd33857 ...

  2. influxdb无法实现关联表_双汇:从棘手的InfluxDB+Redis到TDengine

    双汇发展多个分厂的能源管控大数据系统主要采用两种技术栈:InfluxDB/Redis和Kafka/Redis/HBase/Flink,对于中小型研发团队来讲,无论是系统搭建,还是实施运维都非常棘手.经 ...

  3. emqx 使用端口_数据传输、存储、展现,EMQ X + TDengine 搭建 MQTT 物联网数据可视化平台...

    物联网数据采集涉及到大量设备接入.海量的时序数据传输,EMQ X 消息中间件与 TDengine 大数据平台的组合技术栈完全能够胜任场景中的海量时间序列监测数据的传输.存储和计算. 数据入库后,往往需 ...

  4. TDengine 常见问题解答

    占用端口 默认用户名及密码:root taosdata RESTful 接口默认端口:6041 客户端端口:6030 RESTful Connector 为支持各种不同类型平台的开发,TDengine ...

  5. 5-TDengine集成SpringBoot,MyBatis,MyBatisPlus

    [本文正在参与 "拥抱开源 | 涛思数据 TDengine有奖征稿] https://marketing.csdn.net/p/0ada836ca30caa924b9baae0fd33857 ...

  6. [2021年最新]国产时序性数据TDenige入门

    一.TDenige简介 TDengine:是涛思数据面对高速增长的物联网大数据市场和技术挑战推出的创新性的大数据处理产品,它不依赖任何第三方软件,也不是优化或包装了一个开源的数据库或流式计算产品,而是 ...

  7. 双汇大数据方案选型:从棘手的InfluxDB+Redis到毫秒级查询的TDengine

    双汇发展多个分厂的能源管控大数据系统主要采用两种技术栈:InfluxDB/Redis和Kafka/Redis/HBase/Flink,对于中小型研发团队来讲,无论是系统搭建,还是实施运维都非常棘手.经 ...

  8. Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)...

    Spring MVC 学习总结(九)--Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务) 目录 一.JSON 1.1.概要 1.2.使用ModelAndView ...

  9. Apache CXF实现Web Service(3)——Tomcat容器和不借助Spring的普通Servlet实现JAX-RS(RESTful) web service...

    起步 参照这一系列的另外一篇文章: Apache CXF实现Web Service(2)--不借助重量级Web容器和Spring实现一个纯的JAX-RS(RESTful) web service 首先 ...

  10. 云端的ABAP Restful服务开发

    愉快的暑假结束了,今天是小朋友新学期开学后的第一个周日,不知道各位家长是否和小朋友们一起,已经适应了新学期的生活了么? Jerry从少的可怜的属于自己的周末时光挤了一小部分时间出来,写了这篇文章. J ...

最新文章

  1. Anaconda 默认环境
  2. 免焊vga3加6接线图_计数器和接近开关两线怎么接,计数器接近开关接线图
  3. mysql grep 提取错误日志_详解grep获取MySQL错误日志信息的方法
  4. 工作245:vue的注意规范之v-if 与 v-for 一起使用
  5. 刚开始学ASP+ACCESS时,该注意的事项
  6. Debug日志正常,输出和HTML页面乱码
  7. 电信网通南北分治 学者呼吁应查处
  8. TracePro v6.02 Win32-ISO 1CD(光学机构仿真软件\
  9. SGD ,Adam,momentum等优化算法比较
  10. 图像处理(一)图像灰度化的三种方式
  11. 周伟焜:IBM为何重造信仰
  12. 与智能汽车相见恨晚的SOA到底是什么?
  13. 【毕业设计】答 辩 技 巧 二(以一个过来人的身份,祝各位答辩 过 过 过)
  14. 微信小程序页面分享出去后用户无法通过分享页面返回首页bug解决方法
  15. Win11打不开安全中心怎么解决
  16. 计量经济学计算机输出结果,计量经济学作业结果解析A.doc
  17. axios库读不到cookie_axios请求无法携带cookie
  18. 少年中国说——梁启超〔近现代〕
  19. 设计模式 工厂模式 从卖肉夹馍说起
  20. 阿piu传-文档批量上传客户端-道客巴巴版使用帮助

热门文章

  1. php phpexcel导入excel
  2. mybaitis List入参
  3. DELPHI操作INI文件详细讲解
  4. Java 最常见的 200+ 面试题:面试必备
  5. Hosts文件与钓鱼网站
  6. 在rem布局下使用背景图片以及sprite
  7. 重构第0天--重构的理解
  8. 【算法学习笔记】81.动态规划 分类讨论 SJTU OJ 1075 括号匹配升级
  9. Hadoop数据传输工具sqoop - 样例
  10. 关于bridge-nf-call-iptables的设计问题