1.4 KiB
1.4 KiB
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就是这样, 历史原因)