GraphQL接口简介

GraphQL提供HTTP接口,使用户可以获取指定数据源中的数据,无需登录神箭手后台。也就是说用户通过发送HTTP请求来调用GraphQL接口。

接口调用说明

请求方式 GET

请求地址 https://graphql.shenjian.io/?user_key=用户key&timestamp=秒级时间戳&sign=签名&source_id=数据源ID&query=查询请求

参数说明如下:

参数 参数说明
user_key 用户key(您可以在神箭手用户中心查看您的user_key)
timestamp 当前时间戳(1970年01月01日起至现在的总秒数, 精确到秒)
sign 签名(用户key, 秒级时间戳, 用户密钥三个值顺序连接后用MD5加密得到的32位字符串, 大小写均可)
source_id 数据源ID(可在每个数据源的”数据”页查看)
query 查询请求(后面会介绍query语法)

query参数是一个字符串, 需要utf8 urlencode

接口返回说明

接口返回json数据,成功示例

{
"code": 0,
"result": {
"count": 2523,
"data": [
{"__id":105,"__time":1493003149,"name":"脚钛"},
{"__id":106,"__time":1493003149,"name":"腕表"},
{"__id":107,"__time":1493003148,"name":"春鞋"}
],
"page_info": {
"has_next_page": true,
"end_cursor": 107
}
}
}

失败示例

{
"error_info": {
"message": "Cannot query field \"age\" on type \"data\".",
"locations": [{"line":1,"column":63}]
},
"code": 500
}

返回参数说明:

参数 参数说明
code 返回码
result 返回内容(请求成功时会出现)
error_info 错误信息(请求失败时会出现)

返回码对照表:

返回码 返回码说明
0 成功
101 无效的user_key
102 无效的sign
103 数据源不存在
104 请求频率超过限制,详情查看调用限制
106 请求已过期(timestamp落后服务器时间超过5分钟)
500 (具体错误原因请在返回的”error_info”字段中查看)

调用的示例代码

<?php

// 可在神箭手"用户中心"查看
$user_key = '用户Key';
// 可在神箭手"用户中心"查看
$user_secret = '用户密钥';
// 可在每个数据源的"数据"页查看
$source_id = <数据源ID>;
$timestamp = time();
$sign = md5($user_key . $timestamp . $user_secret);
$gt = 0;
// 该"query"语句会返回数据的所有字段,
// 如果需要返回部分字段请参看上文中的"query语法说明"
$query = "source(__id: {gt: {$gt}}, limit: 5, sort: \"asc\")".
"{data{}, page_info{has_next_page, end_cursor}}";

$url = "https://graphql.shenjian.io/?".
"user_key={$user_key}&timestamp={$timestamp}&sign={$sign}".
"&source_id={$source_id}&query=" . urlencode($query);

$content = file_get_contents($url);
$result = json_decode($content, true);
if($result['code'] == 0) {// 正确返回
$data = $result['result']['data'];
foreach($data as $item) {
echo "item id: " . $item['__id'] . "\n";
}
} else {
echo "error code: " . $result['code'] . "\n";
echo "error reason: " . $result['error_info'] . "\n";
}