V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
guyskk
V2EX  ›  Python

Flask-Restaction - 为 RESTful API 而生的 Web 框架

  •  
  •   guyskk ·
    guyskk · 2016-10-17 12:00:09 +08:00 · 4923 次点击
    这是一个创建于 2965 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 的讨论,有兴趣的朋友出来聊聊吧。

    最后一个原因是我决定这周把英文文档写出来,其实早就有这个想法,但一直畏难+懒,题主英文写作比较菜, 重度依赖词典>﹏<。

    10 条回复    2016-10-18 12:04:51 +08:00
    cielpy
        1
    cielpy  
       2016-10-17 12:24:46 +08:00   ❤️ 1
    RethinkDB 不是关门了吗。。
    guyskk
        2
    guyskk  
    OP
       2016-10-17 12:29:32 +08:00 via Android
    @cielpy 还有开源社区,我觉得可以试试
    1130335361
        3
    1130335361  
       2016-10-17 15:47:53 +08:00   ❤️ 1
    贵博的 RSS 好像挂了
    guyskk
        4
    guyskk  
    OP
       2016-10-17 16:27:14 +08:00
    @1130335361https://github.com/guyskk/guyskk.github.io/blob/master/feed.xml 吗?我没怎么用过 RSS ,可以帮我看看哪里出问题了吗
    menc
        5
    menc  
       2016-10-17 16:34:42 +08:00   ❤️ 1
    我问下,和 flask-restful 区别在哪里呢
    guyskk
        6
    guyskk  
    OP
       2016-10-17 17:02:31 +08:00 via Android
    @menc 在各方面都比 flask-restful 更好用,我认为完全可以替代 flask-restful 。
    flask-restful 没有的功能 flask-restaction 有,比如自动生成文档。
    flask-restful 有的功能, flask-restaction 做的更好,比如请求参数校验,响应结果序列化。
    flask-restaction 只有不到 1000 行代码, flask-restful 的代码有几千行,而且 shit 一样。
    kangsgo
        7
    kangsgo  
       2016-10-18 02:29:20 +08:00
    django 有类似的轮子么
    qweweretrt515
        8
    qweweretrt515  
       2016-10-18 09:57:58 +08:00   ❤️ 1
    建议楼主参考下 django-rest-framework
    qweweretrt515
        9
    qweweretrt515  
       2016-10-18 09:58:16 +08:00
    @kangsgo 有啊 django 轮子就是 django-rest-framework ,非常成熟的一个框架
    guyskk
        10
    guyskk  
    OP
       2016-10-18 12:04:51 +08:00 via Android
    @qweweretrt515
    django-rest-framework 我了解过,只是没用它写过项目。
    flask-restaction 和 django-rest-framework 比较大的区别是 flask-restaction 的校验数据、序列化直接写在 doc string 里面, django 是定义一个类,很像 https://github.com/schematics/schematics 这个库,
    flask-restaction 的更像是 json schema ,用来生成文档会更方便。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3462 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 04:50 · PVG 12:50 · LAX 20:50 · JFK 23:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.