子路由器和视图
在实现了基本的应用程序功能后,蝙蝠侠希望将代码库拆分为多个文件,以提高可维护性和扩展性。
此时,Robyn 向他介绍了子路由器和视图的概念。
路由器 (Routers)
路由器用于将路由(URL 路径与请求处理函数的映射)组织到不同模块中,从而使应用更加模块化,便于管理和扩展。
例如,如果要为前端功能创建一个路由器,可以创建一个名为 frontend.py 的文件,该文件将包含所有与前端相关的路由。
frontend.py 文件中的代码示例如下:
├── app.py
├── frontend.py
├── Dockerfile
└── requirements.txt
frontend.py 文件中的代码示例如下:
创建路由器
# frontend.py
from robyn.templating import JinjaTemplate
from robyn import SubRouter
import os
import pathlib
current_file_path = pathlib.Path(__file__).parent.resolve()
jinja_template = JinjaTemplate(os.path.join(current_file_path, "templates"))
frontend = SubRouter(__name__, prefix="/frontend")
@frontend.get("/")
async def get_frontend(request):
context = {"framework": "Robyn", "templating_engine": "Jinja2"}
return jinja_template.render_template("index.html", **context)
在 app.py 文件中,您可以通过以下方式引入并注册前端路由器:
嵌套路由
# app.py
from .frontend import frontend
app.include_router(frontend)
视图 (Views)
视图用于组织和处理路由的具体功能,通常涉及同步或异步的请求处理。它侧重于定义路由的行为和处理请求与响应。
例如,如果要为前端创建视图,可以创建一个名为 frontend.py 的文件。此文件将包含所有与前端相关的路由。
代码示例如下:
from robyn import SyncView
@app.view("/sync/view/decorator")
def sync_decorator_view():
def get():
return "Hello, world!"
def post(request: Request):
body = request.body
return body
