Sanic框架请求与响应实例分析
本⽂实例讲述了Sanic框架请求与响应。分享给⼤家供⼤家参考,具体如下:
前⾯介绍了,这⾥接着介绍Sanic框架的请求与响应。
简介
Sanic是⼀个类似Flask的Python 3.5+ Web服务器,它的写⼊速度⾮常快。除了Flask之外,Sanic还⽀持异步请求处理程序。这意味着你可以使⽤Python 3.5中新的闪亮的异步/等待语法,使你的代码⾮阻塞和快速。
前⾔:Sanic最低⽀持Python 3.5,如果需要学习Sanic,请先下载版本不低于3.5的Python包
请求数据
当⼀个端点收到⼀个HTTP请求时,路由功能被传递到⼀个request对象。以下变量可以作为request对象的属性访问:json:JSON数据
@ute("/post_data",methods=["POST"])
async def post_data(request):
# 将打印传递过来的JSON数据
print(request.json)
return text("it is ok!")
args:查询字符串变量。查询字符串是类似于URL的部分name=laozhang&age=20。如果URL被解析,那么args字典将如下所⽰:{"name":["laozhang"],"age":[20]}
raw_args:在许多情况下,我们需要获取压缩程度低的字典中的url参数。对于之前的URL?
name=laozhang&age=20,raw_args字典将如下所⽰:{"name":"laozhang","age":20}
file:⽂件对象字典,具有名称,正⽂和类型的⽂件列表
@ute("/post_file_data",methods=["POST"])
async def post_file_data(request):
info = ("file")
print(info.name)
pe)
print(info.body)
return text("it is ok!")
python3在线工具菜鸟工具form:表单数据,form字典将如下所⽰:{"name":["laozhang"]}
python请求并解析json数据@ute("/post_form_data",methods=["POST"])
async def post_form_data(request):
name = ("name")
return text("it is ok!")
body:原始数据。⽆论内容类型如何,该属性都允许检索请求的原始数据。byte类型
headers:获取请求表头的不区分⼤⼩写的字典。dict类型
ip:IP地址,str类型
port:端⼝,str类型
socket:请求者的IP地址和端⼝,(IP地址,端⼝)。tuple类型
app:对处理请求的Sanic应⽤程序对象的引⽤。
@ute("/get_app_info")
登入界面
async def get_app_info(request):
print(fig)
return text("it is ok!")
url:请求的完整URL,如:localhost:5000/get_app_info
scheme:获取与请求关联的URL⽅案:http或https
host:获取与请求关联的主机
path:获取请求的路径,如:/get_app_info
query_string:获取查询的字符串,如:name=zhangsan或者为⼀个空⽩字符串
uri_template:获取匹配路由处理程序的模板,如:/get/<id>
token:授权标头的值
get与getlist
当我们访问⼀个GET请求,并传⼊相关参数时,如下的请求:
@ute("/get_info")
async def get_info(request):
print(("name"))
print(list("name")
return text("it is ok!")
当我们传⼊⼀个name为laozhang时,在上⾯有提到,args字典将会是{"name":["laozhang"],所以,访问上⾯的路由,将会打印如下结果:
laozhang
["laozhang"]phpstudy linux安装
响应
使⽤sponse模块中的函数来创建响应
纯⽂本:
sponse import text
@ute("/text")
async def get_text(request):
return text("it is text response!")
HTML:
sponse import html
@ute("/html")
async def get_html(request):
return html("<p>it is html!</p>")
JSON:
sponse import json
@ute("/json")
async def get_json(request):
return json({"name":"laozhang"})
FILE:
sponse import file
@ute("/file")
async def get_file(request):
return await file("/xx/aa/abc.png")
切记,不能少了await关键字
STREAM:
sponse import stream
@ute("/stream")
async def get_stream(request):
async def stream_fn(response):
response.write("abc")
response.write("def")
return stream(stream_fn,content_type="text/plain")
⽂件流:针对⼤⽂件,上⾯⽂件与流的组合
sponse import file_stream
@ute("/file_stream")
jdom解析xml中cdataasync def get_file_stream(request):
return await file_stream("/xx/aa/abc.png")
切记,不能少了await关键字
重定向:
sponse import redirect
@ute("/redirect")
async def get_redirect(request):
return redirect("/json")
RAW:未编码的body响应
sponse import raw
@ute("/raw")
async def get_raw(request):
return raw(b"it is raw data")
访问此接⼝后,将会⽴即下载⼀个名为raw的⽂件,⾥⾯包含内容it is raw data
修改请求头和状态值:如果需要修改请求头和状态值,请将headers和status参数传递给上⾯这些函数,下⾯以json为例sponse import json
@ute("/json")
async def get_json(request):
return json({"name":"⽼张"},headers={"age":18},status=403)
常用的开发工具有哪些
访问此接⼝后,会发现原来本应是200的状态值变成了403,⽽且请求头信息中增加了{"age":18}
更多关于Python相关内容可查看本站专题:《》、《》、《》、《》及《》
希望本⽂所述对⼤家Python程序设计有所帮助。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。