- func: 函数全名。str。含模块名的全名,例如:pandas.read_csv、builtins.print
- args: 位置参数。list或tuple
- kwargs: 关键字参数。dict
细节
- 由于args的参数顺序无法在URL地址中直接进行表达,只能在POST请求的BODY区传输
- args和kwargs中的参数是复杂类型,只能在BODY区使用JSON格式,而不能使用FORM方式
- func放在URL的QUERY部分,方便网络日志和监控工具对用户请求进行跟踪
- fmt: 响应格式约定。
- json: 为了能完整的还原DataFrame,还为了不占用太多流量,使用的tight模式。
- csv: 可能部分语言处理json比较麻烦,所以遇到DataFrame时将输出csv格式。其他情况还是输出json
- pkl.gz: 仅用于Python下的一种二进制格式。无法跨语言
- cache_get: 是否默认从缓存中获取数据
- cache_expire: 指定当前查询数据是否放入缓存,生命周期是多长。单位秒
- 交易日历、历史行情等没有必要每次下载,超时可以设成1个月(86400*30)或以上
- async_remote: 服务端是否以异步方式调用,部分情况需要设成False才不报错
- token: 授权认证。可选
- HTTP,通过Header,进行Bearer认证
- WebSocket,如果所用语言的库支持添加Header,进行Bearer认证,否则使用QUERY区
- HTTP
- 使用POST请求,地址为http://127.0.0.1:8000/api/post
- args与kwargs走BODY区,以JSON格式提交
- token使用Header方式提供
- 其它参数都走QUERY区
- WebSocket
- 地址为ws://127.0.0.1:8000/ws/json
- token优先使用Header,然后是QUERY区
- 除token外的其它参数都打包成json统一发送,包括func、args、fmt、cache_get等
- 跨语言调用仅看POST即可
- GET功能弱,仅于用在浏览器中演示,跨语言调用没必要实现
curl -X 'POST' \
'http://localhost:8000/api/post?func=demo.div&fmt=csv&cache_get=true&cache_expire=86400&async_remote=true' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"args": [1,2],
"kwargs": {}
}'
{
"status": 200,
"datetime": "2022-05-25T14:04:49.605084",
"func": "demo.div",
"args": [
1,
2
],
"kwargs": {},
"type": "float",
"data": 0.5
}
http://localhost:8000/api/get?func=demo.test&fmt=csv&cache_get=true&cache_expire=86400&async_remote=true
,A,B,C,D
2000-01-03,1.4029520495007188,-0.030461041710199775,-0.17509076668316406,-0.5319406092927923
2000-01-04,0.6683877175160576,0.4563825933616125,1.558515141157523,0.9829046296226965
2000-01-05,-1.21018945447475,-0.4110709733721518,0.5898486695659203,0.11777513118966493
2000-01-06,-0.8661291789701833,0.7405674721951274,-1.0071222579732984,0.09598946290817247