device-docking/爱牵挂/爱牵挂M1对外API/intro.md
2023-12-20 11:07:38 +08:00

147 lines
4.7 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

API概述
=======
目录
----
- [请求格式](#请求格式)
- [GET](#GET)
- [POST](#POST)
- [对象输出参数](#对象输出参数)
- [分页参数](#分页参数)
- [嵌套参数](#嵌套参数)
- [简化参数](#简化参数)
- [排序参数](#排序参数)
- [响应格式](#响应格式)
- [返回单个对象](#返回单个对象)
- [返回多个对象](#返回多个对象)
- [返回失败](#返回失败)
- [错误码定义](#错误码定义)
# 请求格式
## GET
GET请求时参数必须放在URL中
> GET /api/posturedata/?device=466970701492096 HTTP/1.1
> Host: 203.195.166.239:8888
> Accept: */*
## POST
POST命令参数可放在URL也可放在BODY中
> POST /api/account/login HTTP/1.1
> Host: 203.195.166.239:8888
> Accept: */*
> Content-Length: 29
> Content-Type: application/x-www-form-urlencoded
> para1=value1&para2=value2
# 对象输出参数
## 分页参数
当返回对象列表时,可以对列表进行分页
| 名称 | 必须 | 类型 | 说明 |
| ------------ | ---- | ------------ | ------------------------------ |
| page | 否 | int | 页数1~N缺省1 |
| rows_per_page| 否 | int | 每页行数缺省20 |
## 嵌套参数
返回对象中有引用类型Reference的属性时可以将被引用的对象嵌套到返回中。
- 原属性输出为ObjectID方式
- 新增一个以$开头的属性,形如"$[attr_name]", 其中attr_name为原属性名其内容是完整的json对象。
| 名称 | 必须 | 类型 | 说明 |
| ------------ | ---- | ------------ | ------------------------------ |
| depth | 否 | int | 嵌套层数(1-4)缺省2 |
## 简化参数
输出简化后的对象只包含特定的属性。必须在定义对象时指出简化对象包含哪些属性如未指定则输出对象的前10个属性。
| 名称 | 必须 | 类型 | 说明 |
| ------------ | ---- | ------------ | ------------------------------ |
| small | 否 | int | 1-完整0-简化。缺省为1 |
## 排序参数
当返回对象列表时,可以对列表进行排序。指定按哪几个属性进行排序。
| 名称 | 必须 | 类型 | 说明 |
| ------------ | ---- | ------------ | ------------------------------ |
| order_by | 否 | string | 需要排序的属性名, 逆序用'-', 多个属性用','连接。如:'order_by=email,-username'表示先按email字典序然后按username逆序 |
# 响应格式
返回内容统一是json格式。
## 返回单个对象
当返回单个对象时,返回格式。 范例:
{
"success": true, // 成功标志
"obj_name": "obj name", // 对象名
"obj": {"key1":"val1", "key2":"val2", ...} // 返回的对象内容
}
## 返回多个对象
当返回多个对象时,返回格式。范例:
{
"success": true, // 成功标志
"obj_name": "obj name", // 对象名
"objs": [{obj1}, {obj2}, ...] // 对象列表
"page": { // 分页信息
"rows_per_page": intval // 每页行数
"total": intval, // 总数
"page_count": intval, // 分页数
"page_current": intval, // 当前页号
}
}
## 返回失败
失败时返回错误码和出错信息。 范例:
{
"success": false, // 成功标志
"error_code": 1, // 错误码
"error_desc": "error description", // 错误描述
"error_url": "/api/account/login", // 错误URL
}
# 错误码定义
| 返回码 | 错误信息 | 说明 |
| ------------ | -------- | ------------------------------ |
| 0 | 成功 | |
| 1 | 错误 | |
| 101 | 未授权 | 需登录 |
| 102 | 没有操作权限 | 没有相应的操作权限,不需重新登录 |
| 103 | 用户不存在 | |
| 104 | 用户已存在 | |
| 105 | 登录验证失败 | |
| 106 | 设备不在线 | |
| 201 | 缺少必填参数 | |
| 202 | 参数格式错误 | |
| 203 | 对象不存在 | |
| 204 | 参数取值错误 | |
| 301 | 数据库错误 | |
| 302 | 数据唯一性错误 | |
| 401 | 数据同步失败 | |
| 999 | 其它错误 | |