22.flask-restless

Flask-Restless为使用SQLAlchemy(或Flask-SQLAlchemy)定义的数据库模型提供简单的ReSTful API生成。生成的API以JSON格式发送和接收消息。

安装

pip install flask_restless

配置

  • 导入模块

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_restless.manager import APIManager
  • 数据库配置

HOSTNAME = "127.0.0.1"
PORT = "3306"
DATABASE = "test"
USERNAME = "root"
PASSWORD = "123456"
DB_URI = "mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8".format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)

# Create the Flask application and the Flask-SQLAlchemy object.
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
db = SQLAlchemy(app)
  • 创建模型类

  • 生成表

  • 创建Flask-Restless API manager

  • 创建视图映射,通过/api/<tablename>进行访问

使用

通过使用http://<host>:<port>/api/<tablename>进行访问。

  • 通过post请求进行创建数据

image-20200906180141856
  • 通过get请求获取数据

image-20200906180027016

常见Restful API接口

  • GET /api/person

    获取所有数据

  • GET /api/person/(int: id)

    通过指定id数据数据

  • GET /api/person?q=<searchjson>

    通过关键字参数q匹配参数,进行查询

    • name:指定的fieldname字段,即类的属性名称。

    • value:指定的参数值,配置op使用。

    • op:指定匹配的方式

      • 运算符

        • ==, eq, equals, equals_to

        • !=, neq, does_not_equal, not_equal_to

        • >, gt, <, lt

        • >=, ge, gte, geq, <=, le, lte, leq

        • in, not_in

        • is_null, is_not_null

        • like

        • has

        • any

    • limit

      指定要返回的最大对象数。

    • offset

      指定返回实例列表的结果集中的偏移量。

    • order_by

      其中,是与所请求模型的字段名称相对应的字符串,而是用于升序的“ asc”或用于降序的“ desc”。

      如果是形式为 __ 的字符串,则可以在相关模型上指定字段。

    • singer

      如果指定为True,只返回一个结果

    示例

    • 任意布尔运算

    返回仅包括年龄属性小于10或大于20的Person实例:

    • 两个值之间的属性

    返回包括年龄属性在10到20之间的Person实例:

    • 一个结果

    返回仅包含ID等于1的唯一Person实例:

    • 比较两个属性

    返回包含年龄属性大于或等于height属性的值的Person实例:

    • 关系的比较属性

    返回包括与Apple相关的Person实例:

    • any

    返回包含具有相关计算机实例且其id字段的值大于1的Person实例:

  • DELETE /api/person/(int: id)

    通过指定id删除数据

  • DELETE /api/person

    仅当在调用create_api()方法时将allow_delete_many关键字参数设置为True时,此选项才可用。

    删除与q URL查询参数中提供的搜索查询匹配的Person的所有实例。

  • POST /api/person

    创建数据

更多参见文档

最后更新于

这有帮助吗?