[关闭]
@elibinary 2016-09-02T04:00:01.000000Z 字数 4788 阅读 1179

NICE-Cube文档

未分类


注册(register)

用以创建关联用户,并返回访问凭证。

请求

语法

  1. POST /api/v1/authorizations/register

访问权限

签名

请求参数

参数名 必填 类型 说明
channel string 用户来源(ali)
uid string 用户标识
deadline integer 签名有效期,如果设置为1小时那么就是当前 datetime 加上一个小时然后转换成 integer
sign string 签名,生成方式会在下面解释

生成 sign 的必要参数

参数名 必填 类型 说明
channel string 用户来源(ali)
uid string 用户标识
deadline integer 签名有效期,如果设置为1小时那么就是当前 datetime 加上一个小时然后转换成 integer

响应内容

  1. {
  2. "token": "token"
  3. }
  1. {
  2. "errors":
  3. {
  4. "code": 600,
  5. "message": "authenticate parameters failed"
  6. }
  7. }

error code

code message
600 authenticate parameters failed
610 invalid token
620 invalid credential
630 authenticate parameters expired

获取凭证(credential)

该接口用来获取访问凭证(token),获取的凭证将用以访问其他数据接口

请求

语法

  1. GET /api/v1/authorizations/credential

访问权限

签名

请求参数

参数名 必填 类型 说明
sign string 签名,生成方式会在下面解释

生成 sign 的必要参数

参数名 必填 类型 说明
channel string 用户来源(ali)
uid string 用户标识
deadline integer 签名有效期,如果设置为1小时那么就是当前 datetime 加上一个小时然后转换成 integer

响应内容

  1. {
  2. "token": "token"
  3. }
  1. {
  2. "errors":
  3. {
  4. "code": 600,
  5. "message": "authenticate parameters failed"
  6. }
  7. }

error code

code message
600 authenticate parameters failed
610 invalid token
620 invalid credential
630 authenticate parameters expired

签名生成算法

  1. 首先把参数以json的形式组成,例如:
  1. params_json = {
  2. channel: 'ali',
  3. uid: 'uid01',
  4. deadline: 1472035567
  5. }
  1. 对JSON编码的参数进行URL安全的Base64编码
  1. encoded_params = Base64.urlsafe_encode64(params_json.to_json)
  2. # 编码后的值为: 'eyJjaGFubmVsIjoiYWxpIiwidWlkIjoidWlkMDEiLCJkZWFkbGluZSI6MTQ3MjAzNTU2N30='
  1. 使用 secret_key 给上一步生成的字符串计算 HMAC-SHA1 签名
  1. # 先把 app_key 和 encoded_params 拼接起来: app_key + encoded_params
  2. # 然后对其进行签名
  3. init_sign = hmac_sha1(secret_key, app_key + encoded_params)
  4. # 签名之后的值:'<\xD8\x8A\n<~\xF7\xF6.W\xB7\xBCm\bts\xFE((\xCA'
  1. 对签名进行URL安全的Base64编码
  1. encoded_sign = Base64.urlsafe_encode64(init_sign)
  2. # 编码后的值为:'PNiKCjx-9_YuV7e8bQh0c_4oKMo='
  1. 最后把 app_key, encoded_sign, encoded_params 拼接起来,生成最终的签名结果
  1. # app_key + ':' + encoded_sign + ':' + 'encoded_params'
  2. sign = 'APP_KEY:PNiKCjx-9_YuV7e8bQh0c_4oKMo=:eyJjaGFubmVsIjoiYWxpIiwidWlkIjoidWlkMDEiLCJkZWFkbGluZSI6MTQ3MjAzNTU2N30='

请注意其中的 deadline 参数,此签名只在该有效期之前有效。



上传用户信息(profiles)

用以上传或修改用户资料(身高,体重,性别等信息)

请求

语法

  1. 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 用户疾病信息(规格及格式见下方注解)

diseases value

value description
1 甲减
2 月经失调
3 代谢紊乱
4 没有
5 哺乳期
6 运动损伤
7 便秘

diseases 如果有多个则用 ',' 隔开,例子: "1,3,6"

响应内容

  1. { }
  1. {
  2. "errors":
  3. {
  4. "code": 610,
  5. "message": "invalid token"
  6. }
  7. }

获取饮食计划(user_diets)

用以获取一周的饮食计划信息,这里的一周指从当前周的起始(周日)到当前周的结束(周六)共七天

请求

语法

  1. GET /api/v1/user_diets

访问权限

访问凭证

请求参数

参数名 必填 类型 说明
token string 访问凭证(通过认证接口获得)

响应内容

  1. {
  2. "data": [
  3. {
  4. "date": "2016-08-28",
  5. "menu": [
  6. {
  7. "set_type": "breakfast",
  8. "details": [
  9. {
  10. "name": "国光苹果",
  11. "amount": 2,
  12. "unit": "个",
  13. "image_url": "http://7xrnmu.com1.z0.glb.clouddn.com/house/food_mid/m_guoguangpingguo.jpg",
  14. "code": "guoguangpingguo",
  15. "calory": 168,
  16. "unit_id": 152
  17. },
  18. {
  19. "name": "牛奶",
  20. "amount": 1,
  21. "unit": "杯",
  22. "image_url": "http://7xrnmu.com1.z0.glb.clouddn.com/house/food_mid/m_1160989087812.jpg",
  23. "code": "niuru_junzhi",
  24. "calory": 108,
  25. "unit_id": 150
  26. }
  27. ],
  28. "calory": 276
  29. },
  30. {
  31. "set_type": "lunch",
  32. "details": [
  33. {...}
  34. ],
  35. "calory": 454
  36. },
  37. {
  38. "set_type": "extra_meal",
  39. "details": [
  40. {...}
  41. ],
  42. "calory": 144
  43. },
  44. {
  45. "set_type": "dinner",
  46. "details": [
  47. {...}
  48. ],
  49. "calory": 332
  50. }
  51. ]
  52. },
  53. {
  54. "date": "2016-08-29",
  55. "menu": [...]
  56. },
  57. {
  58. "date": "2016-08-30",
  59. "menu": [...]
  60. },
  61. {
  62. "date": "2016-08-31",
  63. "menu": [...]
  64. },
  65. {
  66. "date": "2016-09-01",
  67. "menu": [...]
  68. },
  69. {
  70. "date": "2016-09-02",
  71. "menu": [...]
  72. },
  73. {
  74. "date": "2016-09-03",
  75. "menu": [...]
  76. }
  77. ]
  78. }

响应结构解释

字段名称 说明
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 平级的) 当前一餐的总热量

上面示例结构中重复部分均略写,以 '...' 代写

  1. {
  2. "errors":
  3. {
  4. "code": 610,
  5. "message": "invalid token"
  6. }
  7. }


食物搜索(search)

用以根据关键字搜索食物,返回简要数据列表

请求

语法

  1. POST(GET) /api/v1/foods/search

访问权限

访问凭证

请求参数

参数名 必填 类型 说明
q string 查询关键字(最长100个字符),示例: '苹果'
page int 返回指定页的结果,如不填写默认取第 1 页
per int 指定每页返回数据的数量(最大 30),如不填写默认每页 20 条

响应内容

  1. {
  2. "page": 1,
  3. "total_pages": 257,
  4. "foods": [
  5. {
  6. "id": 469,
  7. "code": "pingguo_junzhi",
  8. "name": "苹果",
  9. "thumb_image_url": "http://s.boohee.cn/house/food_mid/mid_photo_2015126214658469.jpg",
  10. "is_liquid": false,
  11. "health_light": 1,
  12. "weight": "100",
  13. "calory": "54"
  14. },
  15. {
  16. "id": 481,
  17. "code": "qingxiangjiaopingguo",
  18. "name": "青香蕉苹果",
  19. "thumb_image_url": "http://s.boohee.cn/house/food_mid/mid_photo_20152493717481.jpg",
  20. "is_liquid": false,
  21. "health_light": 1,
  22. "weight": "100",
  23. "calory": "52"
  24. },
  25. ...
  26. {
  27. "id": 501,
  28. "code": "pingguoli",
  29. "name": "苹果梨",
  30. "thumb_image_url": "http://s.boohee.cn/house/food_mid/m_pingguoli.jpg",
  31. "is_liquid": false,
  32. "health_light": 1,
  33. "weight": "100",
  34. "calory": "53"
  35. }
  36. ]
  37. }
  1. {
  2. page: 1,
  3. total_pages: 0,
  4. items: []
  5. }

响应结构解释

字段名称 说明
page 表示当前页数
total_pages 是总页数,默认每页返回 20 条数据
items array 类型,其中元素为查询结果集
code 食物标识
name 食物名称
thumb_image_url 食物的示例图片
weight 食物单位数量(主要衡量热量)
calory 食物单位数量的热量
is_liquid boolean 类型,标记该食物是否是液体
health_light int 类型,健康指数,0 没灯、 1 绿灯、 2 黄灯、 3 红灯,从绿到红依次表示从适合减肥到不适合减肥
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注