日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python sanic 向别的服务器发送post请求_Sanic框架请求与响应实例分析

發布時間:2025/4/16 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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框架请求与响应实例分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。