1,静态文件

就向图片文件一样,静态文件和指导性的文件,当通过Sanic服务端用app.static()方法注册的时候,这种方法采用端点url和文件名称获得.这样的文件的指定,将会通过指定的端点访问.

from sanic import Sanic
from sanic.blueprints import Blueprint # 实例化一个Sanic对象
app = Sanic(__name__) # 从/static的静态文件中获取静态文件
app.static("/static", "/static")
# 使用url_for来建立url.默认是static的命名可以被忽略
app.url_for("static", filename="file.text") == "/static/file.text"
app.url_for("static", name="static", filename="file.text") == "/static/file.text" # 当类似/the_best.png这样的url被请求的时候,我们可以提供/home/ubuntu/test.png这样路径下的文件
app.static("/the_best.png", "/home/ubuntu/test.png", name="best_png") # 你也可以使用url_for来建立静态文件的url
# 如果你不想定义静态文件的名称,你也可以不写
app.url_for("static", name="best_png") == "/the_best.png"
app.url_for("static", name="best_png", filename="any") == "/the_best.png" # 你需要为其他静态文件命名
app.static("/another.png", "/home/ubuntu/another.png", name="another")
app.url_for("static", name="another") == "/another.png"
app.url_for("static", name="another", filename="any") == "/another.png" # 你也可以为蓝图使用静态文件
bq = Blueprint("bq", url_prefix="/bq")
bq.static("/static", "/static")
# 直接提供文件
bq.static("/the_best.png", "/home/ubuntn/test.png", name="best_png")
app.blueprint(bq) app.url_for("static", name="bq.static", filename="file.text") == "/bq/static/file.text"
app.url_for("static", name="bq.best_png") == "/bq/test_best.png" app.run(host="0.0.0.0", port=8000, debug=True)

注意:当提供静态目录的时候,sanic是不提供有序目录的.

  • 1.1虚拟主机

app.static()同时也支持虚拟主机,你可以用特殊的虚拟主机(有参数的),提供静态文件,如上图所示.

  • 1.2流式处理大文件

在某些情况下,你也会用sanic提供向视频,图片等文件,你可以选择流式文件要好,相比较于直接下载

stream_large_files=True的时候,Sanic会使用file_stream()放法来替代file()来提供sanic文件,这样作为默认的块的大小,这样才使用3kb左右的大小,如果有需要,你也可以自定义块的大小.

2,版本

你可以通过version版本来装饰路由,或者初始化一个蓝图,,如果用了version,就会造成一个v{verdion}的url前缀,当{version}在版本里是一个数字的地方

  • 2.1,每一个路由

你也可以通过路由直接设置版本号,如上图所示.

我也不知道curl有个啥用???

  • 2,全局蓝图版本

也 可以在实例化蓝图的时候,把版本号存放于蓝图的对象中,这样这个蓝图对象的所有路由都会携带版本号.

sanic官方文档解析之静态文件和版本的更多相关文章

  1. sanic官方文档解析之路由

    1,路由,路由相当于一个网址的地址,来确定网址的位置和唯一性 当http://server.url/被允许访问服务器,当最后的"/"通过路由匹配到了业务逻辑处理的函数,将会返回一个 ...

  2. sanic官方文档解析之Example(一)

    1,示例 这部的文档是简单的示例集合,它能够帮助你快速的启动应用大部分的应用,这些应用大多事分类的,并且提供给ini工作的连接代码: 1.1,基础示例 这部分示例集成了提供简单sanic简单的代码 单 ...

  3. sanic官方文档解析之蓝图

    1,蓝图(Blueprints) 蓝图可用于子路由的应用,代替增加路由的存在,蓝图的定义和增加路由的方法相似,灵活的在应用中注册,并且可插拔的方式. 尤其是在大型应用中使用蓝图的时候在你逻辑打断的地方 ...

  4. sanic官方文档解析之Deploying(部署)和Extension(扩展)

    1,Deploying(部署) 通过内置的websocket可以很简单的部署sanic项目,之后通过实例sanic.Sanic,我们可以运行run这个方法通过接下来的关键字参数 host (defau ...

  5. sanic官方文档解析之logging和request Data

    1,sanic的logging: Sanic允许有做不同类型的日志(通过的日志,错误的日志),在基于Python3的日志API接口请求,你必须具备基本的Python3的日志知识,在你如果想创建一个新的 ...

  6. sanic官方文档解析之下载和Configuration

    1,sanic框架是做什么的? sanic的官方网址:https://sanic.readthedocs.io/en/latest/ sanic框架是一个类似于flask框架的在Python3.5以上 ...

  7. sanic官方文档解析之Example(二)

    1,通过docker部署sanic项目 通过Docker和Docker Compose部署SANIC应用程序是一项很容易实现的任务,下面的示例提供了示例simple_server.py的部署 FROM ...

  8. sanic官方文档解析之Custom Protocols(自定义协议)和Socket(网络套接字)

    1,Custom Protocol:自定义协议 温馨提示:自定义协议是一个高级用法,大多数的读者不需要用到此功能 通过特殊的自定义协议,你可以改变sanic的协议,自定义协议需要继承子类asyncio ...

  9. sanic官方文档解析之Response和Cookie

    1,Sanic的返回的响应体 使用Sanic中的response模块去创建响应对象 返回文本response.text文本(直接字符串就ok) 返回html文件,直接response.html文件(类 ...

随机推荐

  1. Educational Codeforces Round 26

    Educational Codeforces Round 26 困到不行的场,等着中午显示器到了就可以美滋滋了 A. Text Volume time limit per test 1 second ...

  2. 【JavaScript 7—基础知识点】:BOM

    一.基础知识 1.1,什么是BOM BOM(browser object model):也叫浏览器对象模型,它提供了很多对象,用于访问浏览器的功能.BOM缺少规范,每个浏览器提供商又按照自己想法去扩展 ...

  3. 鼠标移动或者鼠标点击div消失不见排查

    点击事件,导致某div或者容器样式隐藏,如果不能直接发现click事件绑定,那么首先排查哪些方法在控制div的样式, 然后看一看哪些方法在调用修改样式的方法. 然后再排查什么在调用修改样式的方法的方法 ...

  4. 高精度&&FFT

    ACM-高精度模板(综合篇) 时间:-- :: 阅读: 评论: 收藏: [点我收藏+] 标签:高精度 在这里,我们约定,能用int表示的数据视为单精度,否则为高精度.所有函数的设计均采用带返回值的形式 ...

  5. 算法复习——半平面交(bzoj2618凸多边形)

    讲解: 这里套用wuvin神犇的ppt,附上友情链接:http://blog.leanote.com/wuvin 半平面交: 算法流程: 注意事项: 例题: Description 逆时针给出n个凸多 ...

  6. Codeforces 894.A QAQ

    A. QAQ time limit per test 1 second memory limit per test 256 megabytes input standard input output ...

  7. msp430项目编程57

    msp430综合项目---扩展项目七57 1.电路工作原理 2.代码(显示部分) 3.代码(功能实现) 4.项目总结

  8. Yii2之创建定时任务

    yii开发的项目需要使用定时任务其实也可以使用一些单独的脚本文件来完成,但若是定时任务代码中需要使用到项目中的一些类,特别是需要使用应用对象Yii::$app的时候,单独的脚本想要完成就比较麻烦了.这 ...

  9. win10+Linux18.04双系统安装

    给好多可爱的妹子重装了那么多次电脑,懒得码过程,因为我一般每次都要查一查...这次来个综合版吧,超简单,无脑操作. 首先说一下我的电脑Thinkpad + 500G 硬盘 (2014年买的老电脑) 首 ...

  10. 洛谷——P1057 传球游戏

    P1057 传球游戏 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹 ...