一个简单的falcon库,允许定义一个资源类来处理对单个项和多个项的请求

falcon-resource-factor的Python项目详细描述


versionBuild StatusLicenseWheel

一个简单的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实例将创建两个独立的资源 内部调用ResourceDetailResourceList进行处理 单件物品和物品清单,并在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

#####拉取请求

除了希望听到你的反馈和建议,我还 有兴趣接受新法规形式的直接帮助或 文档。请随时针对我的Github repository提交拉取请求

#####测试

所有拉取请求都应通过测试套件,该套件可以简单地启动 使用

python setup.py test

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
从Java中的方法返回列表时遇到问题   java如何忽略json字段,并使用Jackson ObjectMapper获取其值以进行映射   spring通过更新其各自java对象的值来映射两个xsd文件   java从HttpClient获取500错误,在浏览器中工作   java使用物理键输入(耳机中的按钮)在安卓中执行一些操作   如何在int数组(java)中追加int?   java Spring RequestParam的默认值等于方法调用   java将JsonLayout添加到log4j2 json配置   Ubuntu上的maven Tomcat6 libs和/usr/share/java   java单元测试Android活动   java获取URL证书的屏幕截图   java如何为自定义类加载器加载的类提供工具?   FB墙上的java错误图片,来自安卓应用程序的反馈帖子(安卓 FB sdk)   从Intellij IDEA内部运行Tomcat时的java差异?   java TDD与不可能的例外   安卓 Java日期表示差异