@elibinary
2016-09-02T04:00:01.000000Z
字数 4788
阅读 1296
未分类
用以创建关联用户,并返回访问凭证。
POST /api/v1/authorizations/register
签名
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
| channel | 是 | string | 用户来源(ali) |
| uid | 是 | string | 用户标识 |
| deadline | 是 | integer | 签名有效期,如果设置为1小时那么就是当前 datetime 加上一个小时然后转换成 integer |
| sign | 是 | string | 签名,生成方式会在下面解释 |
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
| channel | 是 | string | 用户来源(ali) |
| uid | 是 | string | 用户标识 |
| deadline | 是 | integer | 签名有效期,如果设置为1小时那么就是当前 datetime 加上一个小时然后转换成 integer |
{"token": "token"}
{"errors":{"code": 600,"message": "authenticate parameters failed"}}
| code | message |
|---|---|
| 600 | authenticate parameters failed |
| 610 | invalid token |
| 620 | invalid credential |
| 630 | authenticate parameters expired |
该接口用来获取访问凭证(token),获取的凭证将用以访问其他数据接口
GET /api/v1/authorizations/credential
签名
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
| sign | 是 | string | 签名,生成方式会在下面解释 |
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
| channel | 是 | string | 用户来源(ali) |
| uid | 是 | string | 用户标识 |
| deadline | 是 | integer | 签名有效期,如果设置为1小时那么就是当前 datetime 加上一个小时然后转换成 integer |
{"token": "token"}
{"errors":{"code": 600,"message": "authenticate parameters failed"}}
| code | message |
|---|---|
| 600 | authenticate parameters failed |
| 610 | invalid token |
| 620 | invalid credential |
| 630 | authenticate parameters expired |
params_json = {channel: 'ali',uid: 'uid01',deadline: 1472035567}
encoded_params = Base64.urlsafe_encode64(params_json.to_json)# 编码后的值为: 'eyJjaGFubmVsIjoiYWxpIiwidWlkIjoidWlkMDEiLCJkZWFkbGluZSI6MTQ3MjAzNTU2N30='
# 先把 app_key 和 encoded_params 拼接起来: app_key + encoded_params# 然后对其进行签名init_sign = hmac_sha1(secret_key, app_key + encoded_params)# 签名之后的值:'<\xD8\x8A\n<~\xF7\xF6.W\xB7\xBCm\bts\xFE((\xCA'
encoded_sign = Base64.urlsafe_encode64(init_sign)# 编码后的值为:'PNiKCjx-9_YuV7e8bQh0c_4oKMo='
# app_key + ':' + encoded_sign + ':' + 'encoded_params'sign = 'APP_KEY:PNiKCjx-9_YuV7e8bQh0c_4oKMo=:eyJjaGFubmVsIjoiYWxpIiwidWlkIjoidWlkMDEiLCJkZWFkbGluZSI6MTQ3MjAzNTU2N30='
请注意其中的 deadline 参数,此签名只在该有效期之前有效。
用以上传或修改用户资料(身高,体重,性别等信息)
POST /api/v1/profiles
访问凭证
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
| token | 是 | string | 访问凭证(通过认证接口获得) |
| height | 否 | float | 用户身高信息 |
| weight | 否 | float | 用户体重信息 |
| target_weight | 否 | float | 用户目标体重信息(想要达到的体重目标) |
| target_date | 否 | date | 用户预计在哪一天达到目标体重(日期如 '2016-08-31') |
| birthday | 否 | date | 用户出生日期 |
| sex | 否 | string | 用户性别信息(可选范围: male/female) |
| diseases | 否 | string | 用户疾病信息(规格及格式见下方注解) |
| value | description |
|---|---|
| 1 | 甲减 |
| 2 | 月经失调 |
| 3 | 代谢紊乱 |
| 4 | 没有 |
| 5 | 哺乳期 |
| 6 | 运动损伤 |
| 7 | 便秘 |
diseases 如果有多个则用 ',' 隔开,例子: "1,3,6"
{ }
{"errors":{"code": 610,"message": "invalid token"}}
用以获取一周的饮食计划信息,这里的一周指从当前周的起始(周日)到当前周的结束(周六)共七天
GET /api/v1/user_diets
访问凭证
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
| token | 是 | string | 访问凭证(通过认证接口获得) |
{"data": [{"date": "2016-08-28","menu": [{"set_type": "breakfast","details": [{"name": "国光苹果","amount": 2,"unit": "个","image_url": "http://7xrnmu.com1.z0.glb.clouddn.com/house/food_mid/m_guoguangpingguo.jpg","code": "guoguangpingguo","calory": 168,"unit_id": 152},{"name": "牛奶","amount": 1,"unit": "杯","image_url": "http://7xrnmu.com1.z0.glb.clouddn.com/house/food_mid/m_1160989087812.jpg","code": "niuru_junzhi","calory": 108,"unit_id": 150}],"calory": 276},{"set_type": "lunch","details": [{...}],"calory": 454},{"set_type": "extra_meal","details": [{...}],"calory": 144},{"set_type": "dinner","details": [{...}],"calory": 332}]},{"date": "2016-08-29","menu": [...]},{"date": "2016-08-30","menu": [...]},{"date": "2016-08-31","menu": [...]},{"date": "2016-09-01","menu": [...]},{"date": "2016-09-02","menu": [...]},{"date": "2016-09-03","menu": [...]}]}
| 字段名称 | 说明 |
|---|---|
| data | array 类型,其中共有7个元素,分别为一周七天的饮食计划数据 |
| date | 饮食计划的具体日期,每天饮食计划结构必存在的元素 |
| menu | array 类型,其中元素为包括加餐在内的一日四餐的具体菜单信息,实际返回可能缺少某餐或某几餐,其元素数量为 0 ~ 4 个 |
| set_type | 具体某一餐的餐别,可选值 ['breakfast', 'lunch', 'extra_meal', 'dinner'],分别为早餐、午饭、加餐和晚餐 |
| details | array 类型,菜单中菜品的具体内容信息,其中每个元素为一样菜品 |
| name | 菜品名字 |
| amount | 菜品数量 |
| unit | 菜品单位 |
| image_url | 菜品的示例图片 |
| code | 菜品的标识码 |
| unit_id | 菜品单位的标识码 |
| calory (details 内的) | 本次食用本菜品共摄入的热量,本数值为 数量*单位热量 |
| calory (details 平级的) | 当前一餐的总热量 |
上面示例结构中重复部分均略写,以 '...' 代写
{"errors":{"code": 610,"message": "invalid token"}}
用以根据关键字搜索食物,返回简要数据列表
POST(GET) /api/v1/foods/search
访问凭证
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
| q | 是 | string | 查询关键字(最长100个字符),示例: '苹果' |
| page | 否 | int | 返回指定页的结果,如不填写默认取第 1 页 |
| per | 否 | int | 指定每页返回数据的数量(最大 30),如不填写默认每页 20 条 |
{"page": 1,"total_pages": 257,"foods": [{"id": 469,"code": "pingguo_junzhi","name": "苹果","thumb_image_url": "http://s.boohee.cn/house/food_mid/mid_photo_2015126214658469.jpg","is_liquid": false,"health_light": 1,"weight": "100","calory": "54"},{"id": 481,"code": "qingxiangjiaopingguo","name": "青香蕉苹果","thumb_image_url": "http://s.boohee.cn/house/food_mid/mid_photo_20152493717481.jpg","is_liquid": false,"health_light": 1,"weight": "100","calory": "52"},...{"id": 501,"code": "pingguoli","name": "苹果梨","thumb_image_url": "http://s.boohee.cn/house/food_mid/m_pingguoli.jpg","is_liquid": false,"health_light": 1,"weight": "100","calory": "53"}]}
{page: 1,total_pages: 0,items: []}
| 字段名称 | 说明 |
|---|---|
| page | 表示当前页数 |
| total_pages | 是总页数,默认每页返回 20 条数据 |
| items | array 类型,其中元素为查询结果集 |
| code | 食物标识 |
| name | 食物名称 |
| thumb_image_url | 食物的示例图片 |
| weight | 食物单位数量(主要衡量热量) |
| calory | 食物单位数量的热量 |
| is_liquid | boolean 类型,标记该食物是否是液体 |
| health_light | int 类型,健康指数,0 没灯、 1 绿灯、 2 黄灯、 3 红灯,从绿到红依次表示从适合减肥到不适合减肥 |