GH3 Python WSGI纳米框架。
项目描述
gh3 Python WSGI nanoframework
if you are not already there, read this doc with API links working
in all their glory on the
[website](https://gh3-website.web.app/README.html)
第一个应用
import gh3
def say_hello(ctx: gh3.Context):
"""A view handler that returns some text."""
ctx.reply_text('hello, world')
# Create the app, add a route, and start the debug server.
app = gh3.App()
app.add_route('/', say_hello)
app.debug()
在这里,我们创建了一个 gh3.App 实例,并向其添加了一个简单路由,并启动了调试服务器。
您可以立即看到请求处理器的某些特性
- 您可以在 gh3.Context 中就地修改响应。
- 要制作一个简单的文本响应,可以使用 reply_text,对于 reply_html 和 reply_json 也有类似的方法。这些
reply_
方法是设置响应数据、响应内容类型和响应状态码的快捷方式。
测试
我们通过调用 gh3.App.tester 使用 Werkzeug 的测试基础设施,获取一个 werkzeug测试客户端 并使用它来对您的应用程序进行请求。有关许多示例,请查看gh3测试套件。
您可以在视图中测试请求上下文,例如。
def text_view(ctx):
assert '/' == ctx.req.path
ctx.reply_text('ok')
app = gh3.App()
app.add_route('/', text_view)
resp = app.tester().get('/')
assert 200 == resp.status_code
我们在上面做出了2个断言
- 响应是200
- 视图中的请求路径是
/
您可以使用上面的模式测试上下文中的任何内容。
安装
virtualenv -p python3.9 env
./env/bin/pip install gh3
路由处理程序参数
路由参数在 ctx.endpoint_args 中可用。它们不会被传递给处理程序函数,因为所有处理程序函数都只接受请求上下文作为参数。
import gh3
def say_hello(ctx: gh3.Context):
"""A view handler that returns some text."""
user = ctx.endpoint_args['user']
ctx.reply_text(f'hello, {user}')
# Create the app, add a route, and start the debug server.
app = gh3.App()
app.add_route('/<user>', say_hello)
app.debug()
路由、目标和端点
正如上面的简单示例中一样,有一个路由 '/'
和一个目标,即 say_hello
函数。没有描述的是,端点是根据函数名称推断出来的,但可以显式设置
app.add_route('/', say_hello, endpoint='home')
端点用于URL的反向查找。
更复杂的路由
通过使用 add_rule 和 add_target,可以访问 Werkzeug 的所有路由范围。例如,要使用 Werkzeug 的 Submount 规则工厂,应手动创建规则并添加目标处理程序。
rule = gh3.wz_routing.Submount(
Rule('/', endpoint='blog/index'),
Rule('/entry/<entry_slug>', endpoint='blog/show')
)
app.add_rule(rule)
app.add_target('blog/index', my_blog_index_handler)
app.add_target('blog/show', my_blog_show_handler)
为什么?
我喜欢 Werkzeug,但真的很不喜欢 Flask(抱歉,Armin)。我发誓我使用过 Flask,在大型的生产应用中(每年服务数十亿页面)。Flask 中有一些模式,让我作为一支大型(30+人)工程团队的一部分进行开发变得极其困难,gh3 故意省略了这些内容。gh3 从来不会像 Flask 一样功能丰富,这也是可以接受的。请原谅我这几百行经过良好测试的代码。如果您仍然想知道为什么,请随时继续。
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定该选择哪个,请了解更多关于 安装包 的信息。
源分布
gh3-1.0.4.tar.gz (10.9 kB 查看哈希值)
构建分布
gh3-1.0.4-py3-none-any.whl (6.3 kB 查看哈希值)
关闭
gh3-1.0.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2919f543771d2c79aeadaad257a1fef9ef7cc9c0c8e72f78595177b0d7f22a71 |
|
MD5 | 1c673d09d4f8b6ea5efae972502e895e |
|
BLAKE2b-256 | 5a30bd9628177603cf4edc754403f0f0ceffc74867129881e8e34bf14103c961 |
关闭
gh3-1.0.4-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9e2c19ca39524f12bed691c13882274629eac8b9965171395a826a0b9d3a097e |
|
MD5 | ea93da6f4feda87b34008a255c165e7f |
|
BLAKE2b-256 | 2967b369656cb6625e8143d36f0e63a0fb46063456597b2c154fcb856b53b839 |