用于sqlalchemy模型的自动化restapi
flask_sandbo的Python项目详细描述
砂箱是sandman’s 小弟弟。与sandman类似,烧瓶沙盘自动生成 restapi。与{TT1}$不同,它从现有的烧瓶SqLalCyy中这样做。 模型。
tl;flask sandboy博士为您的模型提供了一个restful http端点 自动地,对所有http方法都有适当的支持。需要两个人 要使用且没有依赖项的代码行。
安装
应使用pip:
$ pip install flask-sandboy
用法
这是一个关于现有的烧瓶应用程序的例子{TT4} $ 烧瓶sqlalchemy型号:
fromflaskimportFlaskfrommodelsimportMachine,Cloud,dbapp=Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///db.sqlite3'db.init_app(app)withapp.app_context():db.create_all()app.run(debug=True)
这里是自动创建restful端点的同一个应用程序 由烧瓶砂箱管理
fromflaskimportFlaskfromflask.ext.sandboyimportSandboyfrommodelsimportMachine,Cloud,dbapp=Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///db.sqlite3'db.init_app(app)withapp.app_context():db.create_all()sandboy=Sandboy(app,db,[Cloud,Machine])app.run(debug=True)
唯一需要做的是用 你的应用,你的flask sqlalchemy对象(通常命名为db),以及 要为其创建rest端点的模型类的列表。
启动服务器并测试新的rest api:
$ http -vv -j POST localhost:5000/cloud name=first_cloud description="my first cloud" master POST /cloud HTTP/1.1 Accept: application/json Accept-Encoding: gzip, deflate, compress Content-Length: 56 Content-Type: application/json;charset=utf-8 Host: localhost:5000 User-Agent: HTTPie/0.8.0 {"description": "my first cloud", "name": "first_cloud"} HTTP/1.0 201 CREATED Content-Length: 75 Content-Type: application/json Date: Tue, 06 May 201413:57:52 GMT Server: Werkzeug/0.9.4 Python/2.7.6 {"description": "my first cloud", "id": 1, "name": "first_cloud"}
$ http localhost:5000/cloud/1 master HTTP/1.0 200 OK Content-Length: 75 Content-Type: application/json Date: Tue, 06 May 201413:53:18 GMT Server: Werkzeug/0.9.4 Python/2.7.6 {"description": "my first cloud", "id": 1, "name": "first_cloud"}
$ http DELETE :5000/cloud/1 master HTTP/1.0 204 NO CONTENT Content-Length: 0 Content-Type: text/html;charset=utf-8 Date: Tue, 06 May 201413:53:23 GMT Server: Werkzeug/0.9.4 Python/2.7.6
所有常见的http方法都已实现(HEAD,OPTIONS,GET, DELETE,POST,PATCH,PUT)具有正确的http状态代码。
正在验证请求
Flask Sandboy带有内置的请求验证,确保 存在将对象保存到数据库所需的字段。这是 当我们忘记包含字段时会发生什么:
$ http -j POST :5000/cloud name="bad cloud" develop HTTP/1.0 403 FORBIDDEN Content-Length: 45 Content-Type: application/json Date: Tue, 06 May 201414:05:52 GMT Server: Werkzeug/0.9.4 Python/2.7.6 {"message": "cloud.description required"}
分页
默认情况下,Flask Sandboy支持结果分页。只需添加 <model_name>?page=2请求获取分页结果。由 默认情况下,每页返回20个结果。
待办事项
我会把它留给问题选项卡来跟踪。
发布历史记录
0.0.3
- 各种错误修复
- 100%测试覆盖率
- 文档
0.0.2
- 各种错误修复
0.0.1
- 初始版本