接口约定
- 使用https
- restful风格
- 用户端:https://{域名}/api/{接口版本号}/{resource}/{resource_id}/{sub_resource}/{sub_resource_id}/{action}?{query_string}
- 管理端:https://{域名}/admin/api/{接口版本号}/{resource}/{resource_id}/{sub_resource}/{sub_resource_id}/{action}?{query_string}
- 测试环境域名babieta.xivan.cn
- 正式环境域名待定
- 公共参数放在header,如userid,session_key,unionid,version等
gcid算法
def gcid_hash_file(path):
h = hashlib.sha1()
size = os.path.getsize(path)
psize = 0x40000
while size / psize > 0x200 and psize < 0x200000:
psize = psize << 1
with open(path, 'rb') as stream:
data = stream.read(psize)
while data:
h.update(hashlib.sha1(data).digest())
data = stream.read(psize)
return h.hexdigest()
GET /auth/qiniu/tokens/<gcid>
name | cname | type | Description |
---|---|---|---|
用途 | 获取七牛token | ||
版本号 | v1.0 | ||
gcid | gcid |
例
curl -XGET https://babieta.xivan.cn/api/v1.0/auth/qiniu/tokens/abc
返回数据:
name | cname | type | Description |
---|---|---|---|
code | int | 返回码 0成功 非0失败 | |
msg | string | 错误信息 | |
token | string | 上传文件凭证(5分钟有效) | |
key | string | 上传文件key |
例
{
"code"0,
"msg":"",
"token":"xxxx",
"key":"yyyy"
}
POST /studies/{studies_id}/contents/{contents_id}/
name | cname | type | Description |
---|---|---|---|
用途 | 获取修习列表 | ||
版本号 | v1.0 | ||
studies_id | express(表达训练)/soak(浸泡训练)/communication(交流训练) | ||
contents_id | 题目id |
请求数据:
query_string 参数/可选参数 (get)
name | cname | type | Description |
---|---|---|---|
limit | 数目 | int | 默认10 |
offset | 偏移量 | int | 默认0 |
filter | 筛选条件 | object | 可选 |
filter
name | cname | type | Description |
---|---|---|---|
status | 状态 | int | 1 上架 2下架 |
level | 等级 | array<int> | 适用级别 |
例
curl -XGET -i "https://babieta.xivan.cn/admin/api/v1.0/studies/express?offset=0&limit=4&filter={"status":1, "level":[1,2]}"
返回数据:
name | cname | type | Description |
---|---|---|---|
code | int | 返回码 0成功 非0失败 | |
msg | string | 错误信息 | |
list | array<object> | 测试题列表 | |
count | int | 总数 |
object->express_info(表达训练)
name | cname | type | Description |
---|---|---|---|
id | int | id | |
title | string | 标题 | |
cover_url | int | 单词图片 | |
word_chi | string | 单词中文 | |
audio_text | string | 语音文本 | |
audio_url | string | 语音播放url | |
level | 等级 | array<int> | 适用级别 |
object->soak_info(浸泡训练)
name | cname | type | Description |
---|---|---|---|
id | int | id | |
title | string | 标题 | |
cover_url | int | 语音图片 | |
audio_url | string | 语音播放url | |
level | array<int> | 适用等级 |
object->communication_info(交流训练)
name | cname | type | Description |
---|---|---|---|
id | int | id | |
title | string | 标题 | |
audio_text | string | 语音文本 | |
audio_url | string | 语音播放url | |
level | array<int> | 适用等级 |
例
{"msg": "", "code": 0, "count":10, "list": [{"id":1, "title":"xxx","audio_text":"xxx", "audio_url":"xxx", "level":[1,2,3,4],...}]}
GET /studies/{studies_id}/contents/{contents_id}
name | cname | type | Description |
---|---|---|---|
用途 | 获取修习项信息 | ||
版本号 | v1.0 | ||
studies_id | express(表达训练)/soak(浸泡训练)/communication(交流训练) | ||
contents_id | 题目id |
请求数据:
query_string 参数/可选参数 (get)
name | cname | type | Description |
---|
例
curl -XGET -i "https://babieta.xivan.cn/admin/api/v1.0/studies/express/1"
返回数据:
name | cname | type | Description |
---|---|---|---|
code | int | 返回码 0成功 非0失败 | |
msg | string | 错误信息 | |
info | object | 测试题列表 |
object->express_info(表达训练)
name | cname | type | Description |
---|---|---|---|
id | int | id | |
title | string | 标题 | |
cover_url | int | 单词图片 | |
word_chi | string | 单词中文 | |
audio_text | string | 语音文本 | |
audio_url | string | 语音播放url | |
level | array<int> | 适用等级 |
object->soak_info(浸泡训练)
name | cname | type | Description |
---|---|---|---|
id | int | id | |
title | string | 标题 | |
cover_url | int | 语音图片 | |
audio_url | string | 语音播放url | |
level | array<int> | 适用等级 |
object->communication_info(交流训练)
name | cname | type | Description |
---|---|---|---|
id | int | id | |
title | string | 标题 | |
audio_text | string | 语音文本 | |
audio_url | string | 语音播放url | |
level | array<int> | 适用等级 |
例
{"msg": "", "code": 0, "list": [{"id":1, "title":"xxx", "audio_text":"xxx", "audio_url":"ccc", "level":[1,2,3]}]}
POST /studies/{studies_id}/contents
name | cname | type | Description |
---|---|---|---|
用途 | 添加修习内容 | ||
版本号 | v1.0 | ||
studies_id | express(表达训练)/soak(浸泡训练)/communication(交流训练) |
请求数据:
body 参数
express_info(表达训练)
name | cname | type | Description |
---|---|---|---|
title | string | 标题 | |
cover_gcid | int | 单词gcid | |
word_chi | string | 单词中文 | |
audio_text | string | 语音文本 | |
audio_gcid | string | 语音播放gcid |
soak_info(浸泡训练)
name | cname | type | Description |
---|---|---|---|
title | string | 标题 | |
cover_gcid | int | 图片gcid | |
audio_gcid | string | 语音gcid |
communication_info(交流训练)
name | cname | type | Description |
---|---|---|---|
title | string | 标题 | |
audio_text | string | 语音文本 | |
audio_gcid | string | 语音文件gcid |
例
curl -XPOST -i "https://babieta.xivan.cn/admin/api/v1.0/studies/express" -H "Content-Type/application/json"
-d '{"title":"xxx", "cover_gcid":"yyy", "word_chi":"333", "audio_text":"333", "audio_gcid":"xxx"}'
返回数据:
name | cname | type | Description |
---|---|---|---|
code | int | 返回码 0成功 非0失败 | |
msg | string | 错误信息 |
例
{"msg": "", "code": 0}
PUT /studies/{studies_id}/contents/{contents_id}
name | cname | type | Description |
---|---|---|---|
用途 | 编辑修习内容(局部更新) | ||
版本号 | v1.0 | ||
studies_id | express(表达训练)/soak(浸泡训练)/communication(交流训练) | ||
contents_id | 内容项id |
请求数据:
body 参数/除id外均可选参数
express_info(表达训练)
name | cname | type | Description |
---|---|---|---|
id | int | id | |
title | string | 标题 | |
cover_url | int | 单词图片 | |
word_chi | string | 单词中文 | |
audio_text | string | 语音文本 | |
audio_gcid | string | 语音文件gcid |
soak_info(浸泡训练)
name | cname | type | Description |
---|---|---|---|
id | int | id | |
title | string | 标题 | |
cover_url | int | 语音图片 | |
audio_gcid | string | 语音文件gcid |
communication_info(交流训练)
name | cname | type | Description |
---|---|---|---|
id | int | id | |
title | string | 标题 | |
audio_text | string | 语音文本 | |
audio_gcid | string | 语音文件gcid |
例
curl -XPUT -i "https://babieta.xivan.cn/admin/api/v1.0/studies/express/contents/2" -H "Content-Type/application/json"
-d '{"title":"xxx", "cover_url":"yyy", "word_chi":"333", "audio_text":"333", "audio_gcid":"xxx"}'
返回数据:
name | cname | type | Description |
---|---|---|---|
code | int | 返回码 0成功 非0失败 | |
msg | string | 错误信息 |
例
{"msg": "", "code": 0}
DELETE /studies/{studies_id}/contents/{contents_id}
name | cname | type | Description |
---|---|---|---|
用途 | 删除修习内容项 | ||
版本号 | v1.0 | ||
studies_id | express(表达训练)/soak(浸泡训练)/communication(交流训练) | ||
contents_id | 内容项id |
例
curl -XDELETE -i "https://babieta.xivan.cn/admin/api/v1.0/studies/express/contents/2" -H "Content-Type/application/json"
返回数据:
name | cname | type | Description |
---|---|---|---|
code | int | 返回码 0成功 非0失败 | |
msg | string | 错误信息 |
例
{"msg": "", "code": 0}