handler specs
handler 规范
1 代码分层设计
MVC 的 View 已经单独剥离出去,
而剩下的 MC, 也逐渐演变成了 CSDM
controller-->service-->dao---->model
|
+------>sdk---->第三方服务butterfly
├── conf
│ ├── fx
│ │ └── <app>_<resource>_<action>.toml
│ ├── app
│ │ └── <app>.toml
│ └── servicer
│ ├── mysql_<servicer>.py # 第三方服务配置
│ ├── redis_<servicer>.py # 第三方服务配置
│ └── xx_<xxx>.py # config
└── handlers
└── <app>
├── api_<resource>_<action1>.py # controller
├── api_<resource>_<action2>.py # controller
├── lib_<servicer>.py # service
├── model_xxx.py # dao/model
├── sdk_xxx.py # 第三方服务
├── retstat.py # handler 返回值状态字段
├── const.py # handler 常量定义,避免出现魔数(Magic number)
└── __init__.py1.1 函数命名
2 接口规范
默认
json(JavaScript Object Notation)
如下接口规范参考 baidu/NoahV 接口规范
2.1 接口格式组成
Butterfly 框架接口返回包含状态信息字段 stat 和数据信息字段 data
关于状态字段
即以下通用接口,如果使用其他框架实现后端逻辑,同时要对接 butterfly-fe 时,可以将返回接口中的 stat(str), 替换为 code(int) + message(str)
例子
2.2 接口格式例子
2.2.1 通用接口格式
请求成功接口格式
请求失败接口格式
2.2.2 登录跳转接口格式
登录跳转接口
当接口有鉴权,前端请求数据发现权限校验不通过时,需要让用户跳转到登录地址,因为是 ajax 请求,如果直接返回 302,登录地址和当前地址不一致时候,可能存在跨域问题。
这时候要求接口按照如下格式返回数据,前端在收到对应数据格式之后,在前端做跳转,绕过跨域问题。
2.2.3 表格分页数据接口格式
适用于需要后端分页的情况
参数
GET /products?page_index=1&page_size=15
2.2.4 图表展示接口格式
适用于前端展示图表数据
3 装饰器
3.1 handler 装饰器
Last updated