Flask-Restaction 是什么?
写接口的新姿势,登录接口为例:
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 的讨论,有兴趣的朋友出来聊聊吧。
最后一个原因是我决定这周把英文文档写出来,其实早就有这个想法,但一直畏难+懒,题主英文写作比较菜, 重度依赖词典>﹏<。
1
cielpy 2016-10-17 12:24:46 +08:00 1
RethinkDB 不是关门了吗。。
|
3
1130335361 2016-10-17 15:47:53 +08:00 1
贵博的 RSS 好像挂了
|
4
guyskk OP @1130335361 是 https://github.com/guyskk/guyskk.github.io/blob/master/feed.xml 吗?我没怎么用过 RSS ,可以帮我看看哪里出问题了吗
|
5
menc 2016-10-17 16:34:42 +08:00 1
我问下,和 flask-restful 区别在哪里呢
|
6
guyskk OP @menc 在各方面都比 flask-restful 更好用,我认为完全可以替代 flask-restful 。
flask-restful 没有的功能 flask-restaction 有,比如自动生成文档。 flask-restful 有的功能, flask-restaction 做的更好,比如请求参数校验,响应结果序列化。 flask-restaction 只有不到 1000 行代码, flask-restful 的代码有几千行,而且 shit 一样。 |
7
kangsgo 2016-10-18 02:29:20 +08:00
django 有类似的轮子么
|
8
qweweretrt515 2016-10-18 09:57:58 +08:00 1
建议楼主参考下 django-rest-framework
|
9
qweweretrt515 2016-10-18 09:58:16 +08:00
@kangsgo 有啊 django 轮子就是 django-rest-framework ,非常成熟的一个框架
|
10
guyskk OP @qweweretrt515
django-rest-framework 我了解过,只是没用它写过项目。 flask-restaction 和 django-rest-framework 比较大的区别是 flask-restaction 的校验数据、序列化直接写在 doc string 里面, django 是定义一个类,很像 https://github.com/schematics/schematics 这个库, flask-restaction 的更像是 json schema ,用来生成文档会更方便。 |