API文档¶
签名方法¶
-
GET
http://g.sae.sina.com.cn/
(string: uri)¶ 访问sinacloud的API接口。
Request Headers: - x-sae-accesskey – 应用的Accesskey
- x-sae-timestamp – unix时间戳
- Authorization – 本次请求的认证签名。
Status Codes: - 200 OK – 无错误
- 403 Forbidden – 认证失败
- 404 Not Found – 接口不存在,etc
- 405 Method Not Allowed – 不支持的http method
Example request:
GET /log/http/2015-06-05/1-access.log HTTP/1.1 Host: g.sae.sina.com.cn Accept: text/plain x-sae-accesskey: 0xdeadbeef x-sae-timestamp: 1433495016 Authorization: SAEV1_HMAC_SHA256 VQdy0s/D4aEn6QXAexr0onGmz+QObDwkWcZCCKcxMws=
将所有x-sae-开头的http header(小写)按key排序后用冒号(:)连接key和value,放在method、uri(包含query string,不要转义)后以换行符分隔拼接为签名原文字符串,再以Secretkey为密钥用hmac sha256计算哈希值(二进制),再经base64编码,前面加上”SAEV1_HMAC_SHA256 “,得到本次请求的认证签名,即Authorization字段
<?php
$method = 'GET';
$AccessKey = '******';
$Secretkey = '******';
$uri = '/log/http/2021-05-07/3-access.log?head/0/1';
$a = array();
$a[] = $method;
$a[] = $uri;
$timeline = time();
$b = array('x-sae-accesskey' => $AccessKey, 'x-sae-timestamp' => $timeline);
ksort($b);
foreach ($b as $key => $value) {
$a[] = sprintf("%s:%s", $key, $value);
}
$str = implode("\n", $a);
$s = hash_hmac('sha256', $str, $Secretkey, true);
$b64_s = base64_encode($s);
注解
timestamp与服务器时间相差不得超过120秒。
接口列表¶
实时日志¶
-
GET
/log/
(string: service)/
(string: date)/
(string: ident).log?
(string: fop)¶ 获取应用的日志
本接口支持Range访问返回部分内容,支持通过fop来在服务端直接处理日志内容。
Status Codes: - 200 OK – 无错误
- 206 Partial Content – 部分文件内容(Range访问时)
- 400 Bad Request – 客户端参数错误
- 500 Internal Server Error – 服务端错误
日志接口支持通过fop在服务端处理日志(grep,uniq,tail等)并直接返回处理后的结果。处理指令类似于linux shell命令。
[GET] /app/log?fop1|fop2|fop3|fopN
处理指令和指令之间通过竖线(|)来隔开,称之为管道,上一条指令的输出是下一条指令的输入。命令名后的第一个字符为命令与参数的分隔符,如”grep/login.php”的分隔符为”/”。
fop操作指令列表:
- head/OFFSET/LIMIT:获取日志开头行,OFFSET是起始行号,LIMIT是获取的最大行数。
- tail/OFFSET/LIMIT:获取日志末尾行,OFFSET是起始行号(最后一行行号为1),LIMIT是获取的最大行数。
- grep/PATTERN/PLAIN:关键字匹配,PATTERN为关键字,支持部分正则,遵循lua正则语法,如 yq2[^6]+$ ,指定PLAIN为plain时禁用正则。
- fields/SEPERATOR/COL1/COL2/…:取部分列。SEPERATOR指定列与列的分隔符,COL1等是要取的列的序号,从1开始。
- uniq/SEPERATOR/COL1/COL2/…:去除相邻重复的行,可以指定通过哪些列来排重,若无参数则比较整行,参数同fields指令。
service及ident列表:
service | ident |
---|---|
http | access、error、alert、debug、warning、notice |
taskqueue | error |
cron | error |
access、error | |
rdc | error、warning |
storage | access |
push | access |
fetchurl | access |
caas | stdout、stderr |
afw | block |
注解
http的日志需要在ident前面加上版本号,比如版本1的access日志为1-access.log。
日志下载¶
-
GET
/log/
(string: service)/
(string: date)/
(string: ident).tar.gz?
(string: token)¶ 获取日志下载路径、下载日志,格式与实时日志雷同
下载时支持Range访问返回部分内容
路径右侧参数不全时列出本级路径下的资源,如请求路径/log/http/2015-08-03:2015-08-05/返回应用3日至5日的http日志备份文件信息,使用其中的uri无需签名即可下载文件,uri有效期5分钟。 需要预先访问/log/(string:service)/(string:date)/(string:ident)如/log/http/2015-08-03:2015-08-05/1-access获取日志的备份文件列表,再根据列表中提供的链接下载,uri有效期5分钟。其中结束日期不能包含当天,起始日期必须在30天以内。
Status Codes: - 200 OK – 无错误
- 206 Partial Content – 部分文件内容(Range访问时)
- 400 Bad Request – 客户端参数错误
- 403 Forbidden – 认证错误
- 500 Internal Server Error – 服务端错误
新浪财经实时报价¶
-
GET
/financehq/list=
(string: stockcode)¶ 从新浪财经获取股票的实时报价
输出为csv格式,stockcode可以是半角逗号分隔的多个股票代码
沪深股:
-
GET
/financehq/list=sh000001,sz000001
¶
Example response:
上证指数,2897.2731,2927.1590,2833.0707,2911.1582,2832.5072,0,0,169255434,198547765495,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2016-06-13,15:01:55,00 平安银行,8.570,8.570,8.580,8.610,8.540,8.570,8.580,31517300,270236697.970,85260,8.570,348828,8.560,75620,8.550,490667,8.540,405600,8.530,19237,8.580,603684,8.590,960868,8.600,879238,8.610,724880,8.620,2016-06-17,15:05:03,00
字段序号 内容 1 证券简称 2 今日开盘价 3 昨日收盘价 4 最近成交价 5 最高成交价 6 最低成交价 7 买入价 8 卖出价 9 成交数量 10 成交金额 11 买数量一 12 买价位一 13 买数量二 14 买价位二 15 买数量三 16 买价位三 17 买数量四 18 买价位四 19 买数量五 20 买价位五 21 卖数量一 22 卖价位一 23 卖数量二 24 卖价位二 25 卖数量三 26 卖价位三 27 卖数量四 28 卖价位四 29 卖数量五 30 卖价位五 31 行情日期 32 行情时间 33 停牌状态 停牌状态:
状态码 状态 00 正常 01 停牌一小时 02 停牌一天 03 连续停牌 04 盘中停牌 05 停牌半天 07 暂停 -1 无该记录 -2 未上市 -3 退市 -
注解
指数成交量的单位是手,个股是股,需要特别注意!
statuscode 200: | 无错误 |
---|---|
statuscode 400: | 客户端参数错误 |
statuscode 403: | 认证错误 |
statuscode 500: | 服务端错误 |
orphan: |
---|
分词服务¶
-
POST
/segment/urlclient.php
¶ 从分词服务获取分词的结果,返回的数据格式是JSON。
POST的参数列表:
参数 支持的值 说明 context 待分词的语句 必填,最大10K。 word_tag 0或者1 必填,是否返回词性 encoding GB18030、UTF-8、UCS-2 必填,传入的文件编码格式
输入参数示例:
$post_data = array();
$post_data['context'] = 'hi12';
$post_data['word_tag'] = 0;
$post_data['encoding'] = 'UTF-8';
返回参数示例:
[
{"word":"hi","word_tag":"95","index":"0"},
{"word":"12","word_tag":"90","index":"1"}
]
PHP SDK示例:
词性列表
代码 词性说明 0 不知道 10 形容词 20 区别词 30 连词 31 体词连接 32 分句连接 40 副词 41 副词(“不”) 42 副词(“没”) 50 叹词 60 方位词 61 方位短语(处所词+方位词) 62 方位短语(名词+方位词“地上”) 63 方位短语(动词+方位词“取前”) 64 方位短语(动词+方位词“取前”) 70 前接成分 71 数词前缀(“数”—数十) 72 时间词前缀(“公元”“明永乐”) 73 姓氏 74 姓氏 80 后接成分 81 数词后缀(“来”–,十来个) 82 时间词后缀(“初”“末”“时”) 83 名词后缀(“们”) 84 处所词后缀(“苑”“里”) 85 状态词后缀(“然”) 86 状态词后缀(“然”) 87 状态词后缀(“然”) 90 数词 95 名词 96 人名(“毛泽东”) 97 机构团体(“团”的声母为t,名词代码n和t并在一起。“公司”) 99 机构团体名(“北大”) 100 其他专名(“专”的声母的第1个字母为z,名词代码n和z并在一起。) 101 名处词 102 地名(名处词专指:“中国”) 103 n-m,数词开头的名词(三个学生) 104 n-rb,以区别词/代词开头的名词(该学校,该生) 107 拟声词 108 介词 110 量词 111 动量词(“趟”“遍”) 112 时间量词(“年”“月”“期”) 113 货币量词(“元”“美元”“英镑”) 120 代词 121 副词性代词(“怎么”) 122 数词性代词(“多少”) 123 名词性代词(“什么”“谁”) 124 处所词性代词(“哪儿”) 125 时间词性代词(“何时”) 126 谓词性代词(“怎么样”) 127 区别词性代词(“某”“每”) 130 处所词(取英语space的第1个字母。“东部”) 131 处所词(取英语space的第1个字母。“东部”) 132 时间词(取英语time的第1个字母) 140 助词 141 定语助词(“的”) 142 状语助词(“地”) 143 补语助词(“得”) 144 谓词后助词(“了、着、过”) 145 体词后助词(“等、等等”) 146 助词(“所”) 150 标点符号 151 顿号(“、”) 152 句号(“。”) 153 分句尾标点(“,”“;”) 154 搭配型标点左部 155 搭配型标点右部(“》”“]”“)”) 156 中缀型符号 160 语气词(取汉字“语”的声母。“吗”“吧”“啦”) 170 及物动词(取英语动词verb的第一个字母。) 171 不及物谓词(谓宾结构“剃头”) 172 动补结构动词(“取出”“放到”) 173 动词“是” 174 动词“有” 175 趋向动词(“来”“去”“进来”) 176 助动词(“应该”“能够”) 180 状态词(不及物动词,v-o、sp之外的不及物动词) 190 语素字 191 名词语素(“琥”) 192 动词语素(“酹”) 193 处所词语素(“中”“日”“美”) 194 时间词语素(“唐”“宋”“元”) 195 状态词语素(“伟”“芳”) 196 状态词语素(“伟”“芳”) 200 不及物谓词(主谓结构“腰酸”“头疼”) 201 数量短语(“叁个”) 202 代量短语(“这个”) 210 副形词(直接作状语的形容词) 211 名形词(具有名词功能的形容词) 212 副动词(直接作状语的动词) 213 名动词(指具有名词功能的动词) 230 空格
orphan: |
---|
channel服务(WebSocket)¶
-
POST
/channel/v1/create_channel
¶ 创建一个WebSocket连接,返回的数据格式是JSON,其中包含连接的地址,请注意这个连接地址只能接收下行信息,上行需要通过下述的send_message接口发送。
POST的参数列表:
参数 支持的值 说明 client_id 通道的标示,数字字符组合 唯一 duration 通道的过期时间 单位是秒,最大3600
输入参数示例:
$post_data = array();
$post_data['client_id'] = 'client-1';
$post_data['duration'] = 3600;
返回参数示例:
{"data":"ws://channel.sinaapp.com/com/48HcoN529Ok9OSdROkrJPeN1t0fAVUz_FV15mnJab4X5CxMqBop-Z_lfSQUcTA8x93frndyBiJGqcCBPi2yEuw"}
返回的参数是一个数组,data字段中包含了websocket的连接地址,如果需要使用 HTTPS ,请修改ws为wss。
-
POST
/channel/v1/send_message
¶ 往一个WebSocket连接中推送消息。
POST的参数列表:
参数 支持的值 说明 client_id 通道的标示,数字字符组合 和创建时一致,例如client-1 message 需要推送的消息 不能为空,最大可以发送4k的消息 async 0或者1 是否异步发送,如果设置为1,服务端会立刻返回(始终返回成功),默认为0
输入参数示例:
$post_data = array();
$post_data['client_id'] = 'client-1';
$post_data['message'] = '消息发送';
$post_data['async'] = 0;
返回参数示例:
{"data":1}
返回的参数是一个数组,data字段标示是否发送成功,1表示成功。