Sanic
菠萝啤水桶腰
学技术浪的飞起来
展开
-
阿吉的Sanic教程--11中间件和监听器
11. 中间件和监听Sanic中间件在请求之前或者响应之后运行,开发者可以根据自己的想法有意识的修改请求或者响应。Sanic提供了监听器来处理来自不同应用的循环请求。(1)中间件Sanci提供了两类中间件:请求和响应中间件,开发者可以使用@app.middleware进行中间件响应和声明,在进行中间声明的时候要参数设置来说明是请求/响应中间件。注意:请求中间件只接受请求(re...原创 2019-04-23 15:45:33 · 662 阅读 · 0 评论 -
阿吉的Sanic教程--12websocket
12. websocketSanic为用户提供了一个比较抽象的websockets,以下面代码为例进行相关设置讲解。from sanic import Sanicfrom sanic.response import jsonfrom sanic.websocket import WebSocketProtocolapp = Sanic()@app.websocket('/fee...原创 2019-04-23 15:45:24 · 1488 阅读 · 0 评论 -
阿吉的Sanic教程--13装饰器
13. Handler Decorators(装饰器)Sanic的视图函数是十分简单的python函数,开发者可以在模仿Flask框架的视图函数使用装饰器,请求钩子就是典型的应用场景。(1) 用户认证装饰器假如开发者想要检查登录者的身份信息,开发者可以使用身份认证装饰器进行简单的检查,并返回响应。from functools import wraps from sanic.resp...原创 2019-04-23 15:45:12 · 398 阅读 · 0 评论 -
阿吉的Sanic教程--14流
14. 流(1)请求流sanic允许以流媒体的形式获取请求数据,当请求结束后awaitrequest.stream.read()返回的参数为none,只有请求方式为post或者patch时才会设置相关参数。from sanic import Sanicfrom sanic.views import CompositionViewfrom sanic.views import HTT...原创 2019-04-23 15:45:03 · 357 阅读 · 2 评论 -
阿吉的Sanic教程--15类视图
15. 类视图基本类视图是一个发送响应给请求的类。它提供了一个不同的处理方法给相同的路由请求。和开发者自定的装饰器和和处理函数不同的是,使用类视图处理url可以将为每一个url指定请求方式。(1)定义类视图基类是HTTPMethodView的一个子类,开发者可以为每个路由限制请求方式,将如请求路由所对应的视图函数没有定义请求方法,会返回405请求错误。可以使用app.add_rout...原创 2019-04-23 15:44:52 · 281 阅读 · 0 评论 -
阿吉的Sanic教程--16自定义协议
16. 自定义协议注意⚠️: 这个高级功能要很多开发者不会使用。开发者可以通过自定义一个asyncio.protocol的子类来重写Sanic的协议格式。用户可以通过在sanci.run()使用时进行protocol的关键字参数进行定义,开发者自定义的协议的类将会通过,接收Sanic传递的相关参数,具体如下所示:参数说明loop兼容的循环事件connectio...原创 2019-04-23 15:44:43 · 344 阅读 · 0 评论 -
阿吉的Sanic教程--17sockets
17. socketsSainc的支持使用python 的socket模块的使用去适应IPV4IPV6:from sanic import Sanicfrom sanic.response import jsonimport socketsock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)sock.bind(('::...原创 2019-04-23 15:44:32 · 392 阅读 · 0 评论 -
阿吉的Sanic教程--18SSL上线文
18. SSL 实例条件传递一个SSL上下文应用:import sslcontext = ssl.create_default_context(purpose=ssl.Purpose.CLIENT_AUTH)context.load_cert_chain("/path/to/cert", keyfile="/path/to/keyfile")app.run(host=&qu原创 2019-04-23 15:43:53 · 214 阅读 · 0 评论 -
阿吉的Sanic教程--19调试模式
19. 调试模式当使用Sanic的调试模式时,Sanic将会提供一个详细的日志输出,同时会默认是使用Sanic的重载属性。**注意⚠️: Sainc的调试模式会降低Sanic的性能,建议使用开发者模式。**(1)设置调试模式设置调试模式代码重载功能会被激活,同时会有一个详细的日志输出。from sanic import Sanicfrom sanic.response im...原创 2019-04-23 15:43:38 · 595 阅读 · 0 评论 -
阿吉的Sanic教程--20-测试模式
20. 测试模式Sanic可以的路由可以使用基于iohttp的库开发的test_client对象。test_client对象具有get、post、put、delete、patch、headhe和option方法,一个简单的例子如下所示:# Import the Sanic app, usually created with Sanic(__name__)from external_ser...原创 2019-04-23 15:43:26 · 266 阅读 · 0 评论 -
阿吉的Sanic教程--21开发模式
21. 开发模式(1)开发模式Sanic的开发模式基于内置的websocket,通过创建sanic.Sanic的实例,我们可以传递以下参数进行配置:选项说明host服务主机地址(默认值127.0.0.1)port端口(默认值8000)debug是否打开调试模式(默认值:False)sslssl上下文sock服务器允许接受的的地址...原创 2019-04-23 15:43:06 · 763 阅读 · 0 评论 -
阿吉的Sanic教程--10异常
**10 . 异常**异常可以被视图函数抛出,同时这些异常又可以被Sanic框架自动处理,Exceptions获取第一个参数为错误信息,与此同时可以传递一个状态码返回给Http响应。(1) 抛出一个异常使用raise抛出一个异常,异常函数需要从sanic.exception模块进行导入。from sanic.exceptions import ServerError@app...原创 2019-04-23 15:45:42 · 655 阅读 · 0 评论 -
阿吉的Sanic教程--09版本控制
9. 版本开发者可以传递 version 参数给路由,或者在蓝图初始化的时候进行传递,在用户访问对应接口时将会在url上添加额外的版本号。(1)每一个路由的版本开发者可以未每一个路由添加一个版本号,具体如下所示:from sanic import [email protected]('/text', version=1)def handle_request(request)...原创 2019-04-23 15:45:52 · 227 阅读 · 0 评论 -
阿吉的Sanic教程--01初步使用
Sanic的初步使用:(1)安装安装前首先确认是否已经安装好了pip 和 python 3.5解释器,Sanic不能支持python3.5以下版本,因为sainc使用的新的语法(async / await),python3.5之前的版本不支持。$ pip install sainc如果不想使用uvloop 和ujson安装 可以如下指令进行安装SANIC_NO_UVLOOP=tru...原创 2019-04-23 15:47:26 · 979 阅读 · 0 评论 -
阿吉的Sanic教程--02基本配置
2. 配置(1) 基本的配置任何系统的开发都是相当复杂的配置,配置文件一般都不会放到源码中,配置文件需要根据应用不同的需求进行相应的的配置。本小节将介绍一些基本配置。Sanic将通过配置对象进行配置参数的保存,配置选项可以通过点运算进行参数修改。app = Sanic('myapp') #创建对象app.config.DB_NAME = 'appdb' #设置参数app.config....原创 2019-04-23 15:47:19 · 699 阅读 · 6 评论 -
阿吉的Sanic教程--03日志的配置
3. 日志文件Sanic框架中的日志模块是基于python3 的logging的,开发者可以为其配置不同的方式。开发者也可以进行自定义设置,本小节不涉及此内容。(1) 快捷配置使用Sanic的默认配置。from sanic import Sanicfrom sanic.log import loggerfrom sanic.response import textapp = ...原创 2019-04-23 15:47:12 · 2555 阅读 · 0 评论 -
阿吉的Sanic教程--04请求数据
4. 请求数据当一个节点收到一个请求后,路由函数就传递一个请求对象(Resquest Object)。传递的参数以对象属性的方式绑定到请求对象上。(1) json数据sanic同样提供了为前端返回json参数的基本功能,下面通过一个例子进行说明:from sanic.response import [email protected]("/json")def post_json(req...原创 2019-04-23 15:47:06 · 2110 阅读 · 1 评论 -
阿吉的Sanic教程--05响应数据
5. 响应(1)text文本字符串sanic与flask不同,为前端返回简单文本(无渲染文本)时需要通过response的text方法进行字符处理。from sanic import [email protected]('/text')def handle_request(request): return response.text('Hello world!')(2)...原创 2019-04-23 15:46:57 · 721 阅读 · 0 评论 -
阿吉的Sanic-aip24教程
DocumentAPI Reference¶Submodules¶sanic.app module¶class sanic.app.``Sanic(name=None, router=None, error_handler=None, load_env=True, request_class=None, strict_slashes=False, log_config=None, conf...原创 2019-04-23 15:46:49 · 873 阅读 · 2 评论 -
阿吉的Sanic-examples23教程
DocumentExamples¶This section of the documentation is a simple collection of example code that can help you get a quick start on your application development. Most of these examples are categorized ...原创 2019-04-23 15:46:19 · 277 阅读 · 0 评论 -
阿吉的Sanic教程--06路由配置
6. 路由路由的使用允许开发者自定义来自不同url的视图函数。最基本的路由如下所所示,其中app为Sainc的一个基本实例:# from sanic.response import [email protected]("/") async def test(request): return json({ "hello": "wor原创 2019-04-23 15:46:39 · 711 阅读 · 0 评论 -
阿吉的Sanic教程--07蓝图的使用
7. 蓝图蓝图对象可以对每一个子应用提供一个子路由。蓝图使用可插拔的方法为应用注册路由,而不是使用应用实例进行添加路由的方法。蓝图一般用于大型的项目,尤其是该项目可以分解成几个不同的功能模块时。(1) 蓝图的初步使用接下来我们注册一个简单的注册函数用于处理根路由“/”的逻辑。建议开发者测试时使用my_blueprint.py保存文件,稍后将导入你的主模块中。from sanic...原创 2019-04-23 15:46:09 · 656 阅读 · 0 评论 -
阿吉的Sanic教程--08静态文件
8. 静态文件静态文件和文件夹例如图片等静态资源,都是可以通过app.static进行定义,并且服务与sanic的文档。该需要两个参数,一个时url,一个是文件名字,文件将指向。from sanic import Sanicfrom sanic.blueprints import Blueprintapp = Sanic(__name__)# Serves files from ...原创 2019-04-23 15:46:01 · 1411 阅读 · 0 评论 -
阿吉的Sanic教程--22cookie
22. cookiecookie是一个存储用户信息的浏览器插件,Sanic同时支持读和写cookie,存储信息的方式为键-值对。警告⚠️cookie可以被客户端任意的修改,因此为了信息安全开发者不能将登陆信息存储其中,为了确保客户端的数据不能被修改,可以使用itsdangerous库进行数据的签名加密。(1) 读取cookie通过request.cookies.get( )获取coo...原创 2019-04-23 15:42:25 · 286 阅读 · 0 评论