Flask-Restaction 是什么?
- 创建 RESTful API
- 校验用户输入以及将输出转化成合适的响应格式
- 身份验证和权限控制
- 自动生成 Javascript SDK 和 API 文档
写接口的新姿势,登录接口为例:
def post_login(self, account, password):
"""
登录
$input:
account?str: 用户 ID 或邮箱
password?str: 密码
$output: @user
$error:
403.UserNotFound: 帐号不存在
403.WrongPassword: 密码错误
"""
user = db.run(r.table("user").get(account))
if not user:
user = db.first(r.table("user").get_all(account, index="email"))
if not user:
abort(403, "UserNotFound", "帐号不存在")
# ...省略若干逻辑
g.token = {"type": "login", "id": user["id"]}
return user
Github: https://github.com/guyskk/flask-restaction
介绍完了,说一些我的碎碎念。
原本我是打算等框架再成熟一些(大概会是半年之后)再来介绍的,但因为一些原因,我决定早点分享给大家。
这个框架从第一个 Commit 到现在有一年多了,内部有两个小项目在用(一个是我自己负责的,另一个是一个学弟负责,题主目前大三)。 还有一个是开源项目PurePage,这个项目很早就开始了, 中间换了一次数据库,最近一次重写是在一周前,我花了两天时间写 API 和接口测试,三天写前端(还没写完), 现在我又没有方向了,不清楚自己到底想把它做成什么样。 暂时先把它当作一个 Demo ,大家可以看生成的API 文档,Chrome打开控制台就能用生成的JS,非常欢迎各位提建议!
另一个原因就是昨天看到Sanic is a Flask-like Python 3.5+ web server that's written to go fast.。 我打算让 Flask-Restaction 适配 Sanic ,这样就能愉快的写异步 API 了。 另外没在这里看到有 Sanic 的讨论,有兴趣的朋友出来聊聊吧。
最后一个原因是我决定这周把英文文档写出来,其实早就有这个想法,但一直畏难+懒,题主英文写作比较菜, 重度依赖词典>﹏<。