介绍Sanic支持路由装饰器将处理函数映射到HTTP请求。我们可以在“路由”装饰器中使用一个名为methods的可选参数来处理列表中的任何HTTP方法。蓝图是一个概念,用于将较大应用程序的子模块的子路径插入到Sanic应用程序中。蓝图必须注册到Sanic应用程序对象。使用蓝图还可以避免在整个应用程序中传递Sanic应用程序对象。一般而言,蓝图包括MVC框架中的view.py和model.py。但是为什么叫蓝图呢?每个子目录将包含远不止一个蓝图对象。关键是要强化这样一种观念,即本目录中的所有内容都是围绕这些分立组件之一解决的。蓝图定义根据官方文档,我们可以知道蓝图是一个对象,可以在应用程序中作为子路由。蓝图定义了同样的添加路由的方式,可以将一系列的路由注册到蓝图,而不是直接注册到应用,然后以可插拔的方式将蓝图注册到应用。创建蓝图在下面的程序中,我们能够将这些路线组合成一个蓝图。重要的是,这使我们能够将URL路径(/my_bp)的公共部分拉入蓝图,这使我们能够灵活地在未来进行更改。无论您决定如何组织文件结构,您都应该始终使用蓝图。它们使组织更容易,甚至可以嵌套。就个人而言,我只对最琐碎的Web应用程序使用@app.route。对于任何实际项目,我总是将路线附加到蓝图。fromsanicimportresponsefromsanicimportBlueprintmy_bp=Blueprint("my_blueprint")@my_bp.route('/my_bp')asyncdefmy_bp_func(request):returnresponse.text("MyFirstBlueprint")注册蓝图只是创建我们的蓝图是不足够的。Python无法知道它们的存在。我们需要导入我们的蓝图并将它们附加到我们的应用程序中。这可以通过一个简单的注册方法来完成:app.blueprint()fromcontrollerimportmy_bpapp=Sanic(__name__)app.blueprint(my_bp)OverallDemo为了演示路由和蓝图的使用,创建一个新的main。py文件:fromsanicimportSanicfromsanicimportresponsefromsanic.logimportloggerfromcontrollerimportmy_bpapp=Sanic("main")app.blueprint(my_bp)@app.route('/')defrun(request):返回响应.text("HelloWorld!")@app.route('/post',methods=['POST'])defon_post(request):try:returnresponse.json({"host":request.host,"content":request.json,})除了Exceptionasex:importtracebacklogger.error(f"{traceback.format_exc()}")app.run(host='127.0.0.1',port=8080,debug=True)并创建一个新的controller.py:fromsanicimportresponsefromsanicimportBlueprintmy_bp=Blueprint("my_blueprint")@my_bp.route('/my_bp')asyncdefmy_bp_func(request):returnresponse.text("MyFirst蓝图&Quot;)运行main.py,访问http://127.0.0.1:8080,可以看到如下结果:访问http://127.0.0.1:8080/my_bp,可以看到我们的蓝图结果:我们可以使用Postman客户端来显示我们的POST请求:返回到服务端,我们还可以看到以下背景信息:也是Blueprints,因此每个子目录将有一个且只有一个Blueprint对象。本文简单介绍了蓝图的定义,然后通过创建和注册蓝图进行了简单的演示,但这对于蓝图的理解是远远不够的。因为蓝图非常适合大型应用程序。一个项目可以实例化一个应用程序对象,初始化几个扩展,并注册一个蓝图集合。根据官方文档,蓝图对于大型应用程序特别有用。在大型应用中,可以根据不同的业务,将应用代码分解成多个蓝图。以上就是本次分享的全部内容。现在想学习编程的朋友欢迎关注Python技术大本营获取更多技能和教程。
