RESTful API

此文档主要介绍 TuGrpah 的 Rest API 的调用详情。

1.简介

TuGraph 提供遵从 REST 规范的 HTTP API,以供开发者通过 HTTP 请求远程调用 TuGraph 提供的服务。

本文档描述 TuGraph 的 HTTP API 使用方式。

2.请求与响应格式

TuGraph HTTP Server 接收json格式的请求,经过鉴权后开始提取请求中的字段,根据定义好的接口逻辑处理请求,并返回json格式的响应。

2.1.标准响应格式

每一个响应都以标准响应格式返回,格式如下:

body参数

参数说明

参数类型

是否必填

errorCode

业务级错误码

int类型

success

请求是否成功

int类型

errorMessage

业务级错误信息

字符串类型

data

请求成功时返回的响应信息

json字符串

2.2请求类型

2.2.1. 用户登陆

用户在登陆请求中携带用户名和密码发送到服务端。登录成功会收到带有签名的令牌(Json Web Token)和判断是否为默认密码的布尔型变量,客户端储存该令牌,在后续的请求中将令牌加入请求头的Authorization域中。如果登录失败会收到“Authentication failed”错误。

  • URI: /login

  • METHOD: POST

  • REQUEST:

body参数

参数说明

参数类型

是否必填

userName

用户名

字符串类型

password

用户密码

字符串类型

  • RESPONSE: 如果成功,返回的响应信息中success为00,data中包含令牌

body参数

参数说明

参数类型

是否必填

authorization

令牌

字符串类型

default_password

默认密码

布尔类型

Example request.

    {"userName" : "test", "password" : "123456"}

2.2.2. 用户登出

用户登出,同时删除已经认证的token,用户后续发送请求时,需要重新登陆,并获取新的token。

  • URI: /logout

  • METHOD: POST

  • REQUEST: http request header中携带调用login接口时返回的token,body中没有参数

  • RESPONSE: 如果成功,返回的响应信息中success为00,data为空

2.2.3. 身份刷新

已下发的token失效后,需要调用本接口重新认证。后端验证token合法性。token在初次登录后,1小时内有效,过期需要刷新

  • URI: /refresh

  • METHOD: POST

  • REQUEST: http request header中携带调用login接口时返回的token,body中没有参数

  • RESPONSE: 如果成功,返回的响应信息中success为00,data中包含令牌

body参数

参数说明

参数类型

是否必填

authorization

令牌

字符串类型

2.2.4. 调用cypher

用户对TuGraph的增删改查请求需要调用cypher接口,并通过标准的cypher查询语言发起

  • URI: /cypher

  • METHOD: POST

  • REQUEST:

body参数

参数说明

参数类型

是否必填

graph

查询的子图名称

字符串类型

script

cypher语句

字符串类型

  • RESPONSE: 如果成功,返回的响应信息中success为00,data中包含查询结果

body参数

参数说明

参数类型

是否必填

result

查询结果

json字符串

Example request.

    {"script" : "Match (n) return n", "graph" : "default"}

2.2.5. 上传文件

接口用于将本地文件上传至TuGraph所在机器。可以上传文本文件,二进制文件,可以上传大文件,也可以上传小文件,对于大文件,客户端在上传时应该对文件做切分,每个文件分片不大于1MB,参数Begin-Pos和Size对应本次分片在完整文件中的偏移量与分片大小。参数需要放在http请求的报文头,请求内容对应文件分片内容。本接口请求头不止有token参数

  • URI: /upload_file

  • METHOD: POST

  • REQUEST:

header参数

参数说明

参数类型

是否必填

File-Name

文件名称

字符串类型

Begin-Pos

开始位置在文件内的偏移

可以转成size_t类型的字符串

Size

本次请求文件分片大小

可以转成size_t类型的字符串

  • RESPONSE: 如果成功,返回的响应信息中success为00

2.2.6. 检查文件

本接口用于检查已上传文件正确性,如果成功通过检查,再次上传同一文件时,直接返回成功

  • URI: /check_file

  • METHOD: POST

  • REQUEST:

body参数

参数说明

参数类型

是否必填

fileName

文件名称

字符串类型

checkSum

文件对应md5值

可以转成int类型的字符串

flag为”1”时必填

fileSize

文件长度(以字节计算)

可以转成int类型的字符串

flag为”2”时必填

flag

标记位,flag为1时校验md5。flag为2时校验文件长度

可以转成int类型的字符串

  • RESPONSE: 如果成功,返回的响应信息中success为00

body参数

参数说明

参数类型

是否必填

pass

检查成功为true,否则为false

bool类型

Example request.

{"fileName" : "test.csv", "checkSum" : "$MD5", "flag" : “1”}

2.2.7. 清理缓存文件

admin用户可以删除所有用户上传的文件,其他用户可以删除自己的上传的文件,可以删除指定名称的文件,指定用户上传的文件,也可以删除所有文件

  • URI: /clear_cache

  • METHOD: POST

  • REQUEST:

body参数

参数说明

参数类型

是否必填

fileName

文件名称

字符串类型

flag为”0”时必填

userName

用户名称

字符串类型

flag为”1”时必填

flag

标记位,flag为0时删除fileName指定文件, flag为1时删除userName指定用户已经上传的所有文件,flag为2时删除所有用户上传的文件

可以转成int类型的字符串

  • RESPONSE: 如果成功,返回中success为00

Example request.

{"fileName" : "test.csv", "userName" : "test", "flag" : “1”}

2.2.8. 导入schema

本接口可以根据用户指定的schema信息创建schema模型,schema的详细格式信息请参考data-import.md

  • URI: /import_schema

  • METHOD: POST

  • REQUEST:

body参数

参数说明

参数类型

是否必填

graph

子图名称

字符串

description

schema描述信息

json字符串

  • RESPONSE: 如果成功,返回中success为00

Example request.

{
	"graph": "test_graph",
	"description": {
		"schema": [{
			"label": "Person",
			"type": "VERTEX",
			"primary": "name",
			"properties": [{
				"name": "name",
				"type": "STRING"
			}, {
				"name": "birthyear",
				"type": "INT16",
				"optional": true
			}, {
				"name": "phone",
				"type": "INT16",
				"unique": true,
				"index": true
			}]
		}, {
			"label": "City",
			"type": "VERTEX",
			"primary": "name",
			"properties": [{
				"name": "name",
				"type": "STRING"
			}]
		}, {
			"label": "Film",
			"type": "VERTEX",
			"primary": "title",
			"properties": [{
				"name": "title",
				"type": "STRING"
			}]
		}, {
			"label": "HAS_CHILD",
			"type": "EDGE"
		}, {
			"label": "MARRIED",
			"type": "EDGE"
		}, {
			"label": "BORN_IN",
			"type": "EDGE",
			"properties": [{
				"name": "weight",
				"type": "FLOAT",
				"optional": true
			}]
		}, {
			"label": "DIRECTED",
			"type": "EDGE"
		}, {
			"label": "WROTE_MUSIC_FOR",
			"type": "EDGE"
		}, {
			"label": "ACTED_IN",
			"type": "EDGE",
			"properties": [{
				"name": "charactername",
				"type": "STRING"
			}]
		}, {
			"label": "PLAY_IN",
			"type": "EDGE",
			"properties": [{
				"name": "role",
				"type": "STRING",
				"optional": true
			}],
			"constraints": [
				["Person", "Film"]
			]
		}]
	}
}

2.2.9. 导入数据

本接口允许用户指定已经通过上传,校验的文件作为数据文件,按照schema参数描述的配置信息,导入到graph参数指定的子图中。导入过程是异步的,server在接收到导入请求后,返回一个任务id

  • URI: /import_data

  • METHOD: POST

  • REQUEST:

body参数

参数说明

参数类型

是否必填

graph

子图名称

字符串类型

schema

导入schema描述

json字符串

delimiter

分隔符

字符串类型

continueOnError

单行数据出错是否跳过错误并继续

boolean类型

skipPackages

跳过的包个数

可以转成int类型的字符串

taskId

任务id,用于重启出错的任务

字符串类型

flag

标记位,flag为1时导入成功将删除数据文件

可以转成int类型的字符串

other

其他参数

可以转成int类型的字符串

  • RESPONSE: 如果成功,返回的响应信息中success为00

body参数

参数说明

参数类型

是否必填

taskId

任务编号

字符串类型

Example request.

{
   "graph": "default",         //导入的子图名称
   "delimiter": ",",						//数据分隔符
   "continueOnError": true,		//遇到错误时是否跳过错误数据并继续导入
   "skipPackages": “0”,					//跳过的包个数
   "flag" : "1",
	 "schema": {
		"files": [{
			"DST_ID": "Film",				//终点label类型
			"SRC_ID": "Person",			//起点label类型
			"columns": [						//数据格式说明
				"SRC_ID",							//起点id
				"DST_ID",							//终点id
                "SKIP",								//表示跳过此列数据
				"charactername"				//属性名称
			],
			"format": "CSV",				//数据文件格式类型,支持csv和json
			"path": "acted_in.csv",	//数据文件名称
			"header": 0, 						//数据从第几行开始
			"label": "ACTED_IN"			//边的类型
		}]
	}
}

2.2.10. 导入进度查询

本接口用于查询导入任务的执行进度

  • URI: /import_progress

  • METHOD: POST

  • REQUEST:

body参数

参数说明

参数类型

是否必填

taskId

import_data接口返回的任务id

字符串类型

  • RESPONSE: 如果成功,返回的响应信息中success为00

body参数

参数说明

参数类型

是否必填

success

是否成功导入

boolean类型

reason

导入失败原因

字符串类型

success为false时必填

progress

当前导入进度

可以转成double类型的字符串

Example request.

{"taskId" : "$taskId"}