类似于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 Lindsley – itty 的作者
Matt George 和 Whit Morriss – Wee 的主要贡献者
项目详情
关闭
wee-0.1.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8781ef4b86b759c5f5409263dfba01a4936b73c2a221455a2728168ed4ec7ba8 |
|
MD5 | db6fd81721f820a5b1ef2309a42997b3 |
|
BLAKE2b-256 | 81266e15cf664e897dec4fc29f437e9828882dc9432f30c8c2f9a58d18b447f3 |