python sanic 向别的服务器发送post请求_Sanic框架请求与响应实例分析
本文实例讲述了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数据
@app.route("/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:文件对象字典,具有名称,正文和类型的文件列表
@app.route("/post_file_data",methods=["POST"])
async def post_file_data(request):
info = request.files.get("file")
print(info.name)
print(info.type)
print(info.body)
return text("it is ok!")
form:表单数据,form字典将如下所示:{"name":["laozhang"]}
@app.route("/post_form_data",methods=["POST"])
async def post_form_data(request):
name = request.form.get("name")
return text("it is ok!")
body:原始数据。无论内容类型如何,该属性都允许检索请求的原始数据。byte类型
headers:获取请求表头的不区分大小写的字典。dict类型
ip:IP地址,str类型
port:端口,str类型
socket:请求者的IP地址和端口,(IP地址,端口)。tuple类型
app:对处理请求的Sanic应用程序对象的引用。
@appr.route("/get_app_info")
async def get_app_info(request):
print(request.app.config)
return text("it is ok!")
url:请求的完整URL,如:http://localhost:5000/get_app_info
scheme:获取与请求关联的URL方案:http或https
host:获取与请求关联的主机
path:获取请求的路径,如:/get_app_info
query_string:获取查询的字符串,如:name=zhangsan或者为一个空白字符串
uri_template:获取匹配路由处理程序的模板,如:/get/
token:授权标头的值
get与getlist
当我们访问一个GET请求,并传入相关参数时,如下的请求:
@app.route("/get_info")
async def get_info(request):
print(request.args.get("name"))
print(request.args.getlist("name")
return text("it is ok!")
当我们传入一个name为laozhang时,在上面有提到,args字典将会是{"name":["laozhang"],所以,访问上面的路由,将会打印如下结果:
laozhang
["laozhang"]
响应
使用sanic.response模块中的函数来创建响应
纯文本:
from sanic.response import text
@app.route("/text")
async def get_text(request):
return text("it is text response!")
HTML:
from sanic.response import html
@app.route("/html")
async def get_html(request):
return html("
it is html!
")
JSON:
from sanic.response import json
@app.route("/json")
async def get_json(request):
return json({"name":"laozhang"})
FILE:
from sanic.response import file
@app.route("/file")
async def get_file(request):
return await file("/xx/aa/abc.png")
切记,不能少了await关键字
STREAM:
from sanic.response import stream
@app.route("/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")
文件流:针对大文件,上面文件与流的组合
from sanic.response import file_stream
@app.route("/file_stream")
async def get_file_stream(request):
return await file_stream("/xx/aa/abc.png")
切记,不能少了await关键字
重定向:
from sanic.response import redirect
@app.route("/redirect")
async def get_redirect(request):
return redirect("/json")
RAW:未编码的body响应
from sanic.response import raw
@app.route("/raw")
async def get_raw(request):
return raw(b"it is raw data")
访问此接口后,将会立即下载一个名为raw的文件,里面包含内容it is raw data
修改请求头和状态值:如果需要修改请求头和状态值,请将headers和status参数传递给上面这些函数,下面以json为例
from sanic.response import json
@app.route("/json")
async def get_json(request):
return json({"name":"老张"},headers={"age":18},status=403)
访问此接口后,会发现原来本应是200的状态值变成了403,而且请求头信息中增加了{"age":18}
希望本文所述对大家Python程序设计有所帮助。
python sanic 向别的服务器发送post请求_Sanic框架请求与响应实例分析相关推荐
- c#向服务器发送消息,C#模拟httpwebrequest请求_向服务器模拟cookie发送
public classMyRequest {#region 辅助方法 static string HttpGet(stringurl) {var request =(HttpWebRequest)W ...
- python函数结构图_Python数据结构与算法之图结构(Graph)实例分析
本文实例讲述了Python数据结构与算法之图结构(Graph).分享给大家供大家参考,具体如下: 图结构(Graph)--算法学中最强大的框架之一.树结构只是图的一种特殊情况. 如果我们可将自己的工作 ...
- python希尔排序的优缺点_Python排序搜索基本算法之希尔排序实例分析
本文实例讲述了Python排序搜索基本算法之希尔排序.分享给大家供大家参考,具体如下: 希尔排序是插入排序的扩展,通过允许非相邻的元素进行交换来提高执行效率.希尔排序最关键的是选择步长,本程序选用Kn ...
- python图片解析库_python用来获得图片exif信息的库实例分析
本文实例讲述了python用来获得图片exif信息的库用法.分享给大家供大家参考.具体分析如下: exif-py是一个纯python实现的获取图片元数据的python库,官方下载地址: http:// ...
- python中flush什么意思_python flush()定义及作用详解(实例分析)
今天这篇文章我们来了解一下python之中的flush,在进入文章之前我们首先要知道我们要学的是什么东西,今天讲的是pythonflush,了解什么是flush,并且知道flash什么意思.这些东西我 ...
- python中pass的含义_python中pass语句意义与作用(实例分析)
想必大家都是刚刚才开始接触python这门语言的,今天这篇文章就来带大家来了解一下python这门语言之中常常会用到的一个语句pass语句.想必大家都很好奇python中pass作用是什么,接下来我就 ...
- python实现因子分析及用于综合评分且配上碎石图(实例分析)
由于感觉因子分析不是很懂,因此又通过python把 因子分析(factor analysis)案例(matlab实现) 这题又给打了一遍. 这里加上了碎石图,用来选择辅助选择因子个数,但是我感觉这里没 ...
- php udp发送和接收_php socket通信(tcp/udp)实例分析
本文实例讲述了php socket通信(tcp/udp)方法.分享给大家供大家参考,具体如下: 注意 1.在socket_bind的时候ip地址不能真回环地址如127.0.0.1 2.server.p ...
- Java Web 请求转发与请求重定向
Java Web 请求转发与请求重定向 请求转发 服务器行为,即用户向服务器发送了一次http请求,该请求可能会经过多个信息资源处理以后菜返回给用户,各个信息资源使用请求转发机制互相转发请求,但是用户 ...
最新文章
- php打印文件目录结构,php和java关于目录树(列出某一目录下文件结构)
- LYNC显示用户位置的相关配置
- 如何在CSMAR中找到不同公司,不同时间的数据呢?
- Bootstrap CustomBox 弹层
- java调用ole ie_ActiveX (.ocx)的写法,及在IE里调用
- 如何分割合并ISO文件
- Leetcode--416. 分割等和子集
- 计算机小故障排除方法,常见电脑故障排除方法总汇【详解】
- 监控openfire数据
- 深度学习训练出来的损失不收敛_学习率设置技巧,使用学习率来提升我们的模型...
- LightGBM参数调优代码详解
- 多线程等待/通知机制
- 有关使用seajs和template模板的总结
- 书matlab电子,MATLAB电子仿真与应用教程 第3版.pdf
- 深信服 云桌面 linux,极域深信服云桌面专用版
- ArcGIS聚类分析
- PPT学习笔记和技巧分享【持续更新ing】
- 计算机专业今日份例句
- 北邮计算机学院复试笔试,北邮计算机学院考研复试经验
- 亚马逊linux密码,Linux、Centos、Ubuntu亚马逊服务器开启密码远程,启用root账号
热门文章
- java ui调试_如何使用 IBM i System Debugger 调试 Java 程序
- 思科服务器与交换机链接配置文件,使用思科S系列交换机上的配置迁移工具转换配置文件...
- python编程300例_经典编程100例——python版(例75)
- mos管电路_【鼎阳硬件智库原创︱电源】 MOS管驱动电路的设计
- 将源码包打包成RPM包
- ping连接linux无法访问目标主机,无法访问目标主机是什么情况【解决方法】
- 如何设置电脑锁屏时间_电脑如何设置多屏显示?多屏显示的设置方法
- java语言只保留了什么_java语言的保留的关键字【小白必读】
- macappstore登不上去_荣耀亲选一度登机箱----一个安静得想放进大侄子的magic box
- 前端html5的框架有哪些,10大html5前端框架