一个简单的falcon库,允许定义一个资源类来处理对单个项和多个项的请求
falcon-resource-factor的Python项目详细描述
一个简单的falcon库,允许定义单个资源类 处理对单个项和多个项的请求。当 虽然它不是纯粹的RESTful,但有时您需要您的资源 以支持自定义终结点。库允许您定义 自定义终结点以及同一个资源类的一部分。
安装
使用pip或easy_install安装库。
$ pip install -U falcon-resource-factory
用法
这个库公开一个类 falcon_resource_factory.ResourceFactory,用于添加 Falcon的单个资源类如下所示。
import falcon from falcon_resource_factory import ResourceFactory api = falcon.API() class Resource(object): def on_get(req, res, **kwargs): # Return single object pass def on_get_list(req, res, **kwargs): # Returns list of objects pass resource_factory = ResourceFactory() resource_factory.add_routes(app, '/res', Resource())
ResourceFactory实例将创建两个独立的资源 内部调用ResourceDetail和ResourceList进行处理 单件物品和物品清单,并在Falcon登记 在适当的路线上。生成的资源具有适当的处理程序 对于资源支持的所有http方法 资源处理程序周围的包装器。
对于上面定义的资源,生成的资源将 如下所示
class ResourceDetail(object): def on_get(req, res, **kwargs): resource.on_get(req, res, **kwargs): class ResourceList(object): def on_get(req, res, **kwargs): resource.on_get_list(req, res, **kwargs):
自定义详细信息标识符
ResourceFactory通过附加 传递的路由的资源标识符。默认情况下,详细信息标识符为 id但是您可以在 初始化
resource_factory = ResourceFactory(detail_identifier='uuid')
自定义方法映射
ResourceFactory默认情况下将http方法映射到 使用<method> : on_<method>获取详细资源和 <method>: on_<method>_list用于列表资源。但是他们两个 在初始化ResourceFactory期间可配置。你可以 将http方法的映射传递到资源的方法 列出并详细说明资源。
resource_factory = ResourceFactory(list_method_map={ 'GET': 'on_get_collection', 'POST': 'on_post_collection' ..... }, detail_method_map={ 'GET': 'get_obj', 'POST': 'post_obj' .... }) class Resource(object): def on_get_collection(req, res, **kwargs) pass def on_post_collection(req, res, **kwargs) pass def get_obj(req, res, **kwargs) pass def post_obj(req, res, **kwargs) pass
自定义视图
有时,您希望支持不是crud的api。在这样的 在这种情况下,纯restful方法建议您创建更多 资源,而不是定义自定义动词。不过,有时候更容易 定义自定义终结点/操作,而不是将它们映射到资源 可能不是那么简单。ResourceFactory支持 通过自动为 每个自定义视图和注册到Falcon。你需要通过一个 在初始化期间查看ResourceFactory的规范 注意休息
resource_factory = ResourceFactory(custom_views=[ { "route": "/action1/", "view": "action1", "methods": ['GET'] }, { "route": "/action2/", "view": "action2", "methods": ['POST'] } ]) class Resource(object): def on_get(req, res, **kwargs): pass def action1(req, res, **kwargs): pass def action2(req, res, **kwargs): pass
####贡献的falcon-resource-factory在mit下分发 执照。
将存储库转移到您自己的帐户。
将存储库克隆到本地计算机上的适当位置。
$git clone https://github.com/loanzen/falcon-resource-factory.git
若要从项目文件夹中更新项目,可以运行 以下命令:
$git pull --rebase
#####建筑
安装项目的依赖项。
$pip install -r requirements.txt $pip install -r requirements-dev.txt
#####功能请求
我一直在寻找改进这个项目的建议。如果你有 改善现有特征的建议,或建议 全新功能,请向我的Github repository提交问题
#####错误报告
#####拉取请求
除了希望听到你的反馈和建议,我还 有兴趣接受新法规形式的直接帮助或 文档。请随时针对我的Github repository提交拉取请求
#####测试
所有拉取请求都应通过测试套件,该套件可以简单地启动 使用
python setup.py test