47 lines
1.4 KiB
Markdown
47 lines
1.4 KiB
Markdown
![]() |
# API设计
|
||
|
|
||
|
By life (life@leanote.com)
|
||
|
|
||
|
## api url
|
||
|
|
||
|
所有api的url前面带/api/, 如:
|
||
|
|
||
|
`/api/user/info?userId=xxxx&token=xxxx`
|
||
|
|
||
|
## 文件目录结构
|
||
|
* 所有API的Controller都在app/api文件夹下
|
||
|
* 文件命名: Api功能Controller.go, 如ApiUserController.go
|
||
|
* 结构体命名为 Api功能, 如ApiUser
|
||
|
* API公用Controller: ApiBaseController
|
||
|
* init.go 注入service和定义拦截器
|
||
|
|
||
|
## 流程
|
||
|
用户登录后返回一个token, 以后所有的请求都携带该token.
|
||
|
在init.go中的拦截器会得到token并调用sessionService判断是否登录了
|
||
|
|
||
|
## 返回值结构
|
||
|
* 全部返回JSON, JSON, 除二进制文件(图片, 附件外), 如果返回其它非JSON格式的值, 肯定是出错了
|
||
|
* 错误信息全部返回 {Ok: false, Msg: ""}
|
||
|
* 正确信息全部返回真实的返回数据, 如返回笔记:
|
||
|
```
|
||
|
{
|
||
|
"NoteId": "54bdc7e305fcd13ea3000000",
|
||
|
"NotebookId": "54bdc65599c37b0da9000003",
|
||
|
"UserId": "54bdc65599c37b0da9000002",
|
||
|
"Title": "asdfads",
|
||
|
"Desc": "",
|
||
|
"Tags": null,
|
||
|
"Abstract": "",
|
||
|
"Content": "",
|
||
|
"IsMarkdown": false,
|
||
|
"IsBlog": false,
|
||
|
"IsTrash": true,
|
||
|
"IsDeleted": false,
|
||
|
"Usn": 15,
|
||
|
"Files": [],
|
||
|
"CreatedTime": "2015-01-20T11:13:41.34+08:00",
|
||
|
"UpdatedTime": "2015-01-20T11:13:41.34+08:00",
|
||
|
"PublicTime": "0001-01-01T00:00:00Z"
|
||
|
}
|
||
|
```
|
||
|
* 时间类型全是返回如 "2015-01-20T11:13:41.34+08:00" 的格式, (因为golang的time转成Json就是这样, 历史原因)
|