跳转到主要内容

类似于itty,但使用webob请求、响应和异常对象

项目描述

你可以称之为增强的Webob itty。它借鉴了itty的形式,但允许使用传入的Request或Response对象。默认情况下,它使用WebOb的Request和Response,以及WebOb的。

为什么?

我们与itty合作,头撞了几次。我们非常喜欢它的操作方式,并认为我们可以将其与我们的最爱请求和响应对象结合使用。106行代码后,wee作为一个WSGI应用的调度器诞生了。

基本用法

这是一个超级简单的pony应用,用于展示wee的基本用法。基本上与itty相同,只是我们使用了完整的正则表达式字符串。

import wee
from wsgiref.simple_server import make_server

@wee.get(r'^/$')
def ponytime(request):
    return "It's Pony time!"


@wee.post(r'^/$'):
def make_pony(request):
    ... make a pony ...


@wee.put('^/(?P<pony_name>\w+)$'):
def add_unicorn_horn(request, pony_name=None):
    ... change a pony ...


@wee.delete('^/(?P<pony_name>\w+)$'):
def kill_a_pony(request, pony_name):
    ... delete a pony ...

srv = make_server(host, port, wee.make_app())
srv.serve_forever()

使用前缀

有时你想要将wee应用挂载在现有的应用树中。

import wee

@wee.get('^/$')
def logical_root(request):
    return "I'm an index"

registry = wee.PrefixRegistry(prefix='/my/crazy/existing/dispatch/tree')

wee.make_app(registry=prefix)

实验性的REST容器支持

有一些对创建简单CRUD容器(如下所示)的初步支持。

import wee

@wee.rest("^/candymountain")
class UnicornStable(wee.Resource):
    subtype = 'unicorn_id'
    def get(self):
        ... your list of unicorns ...

    def post(self):
        name = self.request.POST['unicorn-name']
        ... make a unicorn ...

    def getitem(self, unicorn_id):
        ... serve a unicorn ...

    def put(self, unicorn_id):
        ... change a unicorn ...

    def delete(self, unicorn_id):
        ... kill a unicorn ...

REST动词生成一系列正则表达式,用于处理适当的动词,特别注意区分‘get’(/)和‘getitem’(/some_id)。

与itty的其他差异

唯一的另一个主要区别是,调度器的作用域限定于定义处理器的模块。这意味着多个wee应用可以在同一进程中运行,而不会相互覆盖。

我们不提供运行命令,也不提供流行框架的适配器。也许以后会提供。

覆盖率

coverage.py 目前显示 100%,但我们可能还有更多单元测试与栈测试。

等一下,我有点困惑……

“我什么时候用 itty,什么时候用 wee?”

你可能不应该使用任何一个。这是一个实验,所以看起来应该是 itty。

如果你够勇敢的话,当你想要做一些类似于 itty 或 sinatra 的事情,但使用 Webob 时,使用 wee。当你想要一些完全自包含的,没有依赖项,配置简单,希望尽可能快速运行的东西时,使用 itty

致谢

Daniel Lindsleyitty 的作者

Matt George 和 Whit Morriss – Wee 的主要贡献者

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

wee-0.1.1.tar.gz (6.9 kB 查看哈希值)

上传时间 源代码

支持