Flask的简单REST工具包
项目描述
这个库是一个非常小的REST工具包,旨在在您想为Flask应用创建REST API时简化您的生活。
安装它
好吧,这很简单,它被打包并在PyPI上,所以
$ pip install flask-rest
使用它
处理器
创建具有特定方法(即添加、获取、删除和更新)的类,将其注册到一个URL,然后您就完成了。
这里有一个如何使用它的简单示例
from flask import Blueprint from flask_rest import RESTResource, need_auth # Subclass a RestResource and configure it api = Blueprint("api", __name__, url_prefix="/api") # You can define a authenfier if you want to. class ProjectHandler(object): def add(self): #This maps on "post /" form = ProjectForm(csrf_enabled=False) # just for the example if form.validate(): project = form.save() db.session.add(project) db.session.commit() return 201, project.id return 400, form.errors # returns a status code and the data def get(self, project_id): # maps on GET /<id> # do your stuff here return 200, project # you can use the "need_auth" decorator to do things for you @need_auth(authentifier_callable, "project") # injects the "project" argument if authorised def delete(self, project): # do your stuff return 200, "DELETED"
一旦定义了处理器,只需将它们注册到应用程序或蓝图即可
project_resource = RESTResource( name="project", # name of the var to inject to the methods route="/projects", # will be availble at /api/projects/* app=api, # the app which should handle this actions=["add", "update", "delete", "get"], #authorised actions handler=ProjectHandler()) # the handler of the request
如果应该保护一切,可以使用authentifier参数
authentifier=check_project
其中check_project是一个可调用的对象,它返回项目或如果访问未被授权则返回False。
序列化/反序列化
当您返回Python对象时,它们可以被序列化,这在大多数情况下可能很有用。目前支持的唯一序列化格式是JSON。
要序列化普通 Python对象,它们应该有一个_to_serialize属性,包含要序列化的所有属性名称。以下是一个示例
class Member(): _to_serialize = ("id", "name", "email") def __init__(self, **kwargs): for name, value in kwargs.items(): setattr(self, name, value)
如果您想看看这个的实际用途,请访问https://github.com/spiral-project/ihatemoney/blob/master/budget/api.py
项目详情
关闭
Flask-REST-1.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 561fddf8ae39f6581c4c2421476ae38ca1dd089c6a8f36a3ad40ca0405d6318f |
|
MD5 | 3b2edf2a0c57fe4e96c2c31198b3c27a |
|
BLAKE2b-256 | 7388c604c41e4f5350da313948451fdf2d1507c0f43aeb5073302b06ecde2b92 |