最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Sanic框架請求與響應(yīng)實(shí)例分析

 更新時(shí)間:2018年07月16日 10:51:28   作者:噴跑的豆子  
這篇文章主要介紹了Sanic框架請求與響應(yīng),結(jié)合實(shí)例形式詳細(xì)分析了Sanic框架請求與相應(yīng)的相關(guān)參數(shù)、方法及使用技巧,需要的朋友可以參考下

本文實(shí)例講述了Sanic框架請求與響應(yīng)。分享給大家供大家參考,具體如下:

前面介紹了Sanic框架的路由,這里接著介紹Sanic框架的請求與響應(yīng)。

簡介

Sanic是一個(gè)類似Flask的Python 3.5+ Web服務(wù)器,它的寫入速度非???。除了Flask之外,Sanic還支持異步請求處理程序。這意味著你可以使用Python 3.5中新的閃亮的異步/等待語法,使你的代碼非阻塞和快速。

前言Sanic最低支持Python 3.5,如果需要學(xué)習(xí)Sanic,請先下載版本不低于3.5的Python包

請求數(shù)據(jù)

當(dāng)一個(gè)端點(diǎn)收到一個(gè)HTTP請求時(shí),路由功能被傳遞到一個(gè)request對象。以下變量可以作為request對象的屬性訪問:

  • json:JSON數(shù)據(jù)
@app.route("/post_data",methods=["POST"])
async def post_data(request):
  # 將打印傳遞過來的JSON數(shù)據(jù)
  print(request.json)
  return text("it is ok!")

  • args:查詢字符串變量。查詢字符串是類似于URL的部分?name=laozhang&age=20。如果URL被解析,那么args字典將如下所示:{"name":["laozhang"],"age":[20]}
  • raw_args:在許多情況下,我們需要獲取壓縮程度低的字典中的url參數(shù)。對于之前的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:表單數(shù)據(jù),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:原始數(shù)據(jù)。無論內(nèi)容類型如何,該屬性都允許檢索請求的原始數(shù)據(jù)。byte類型
  • headers:獲取請求表頭的不區(qū)分大小寫的字典。dict類型
  • ip:IP地址,str類型
  • port:端口,str類型
  • socket:請求者的IP地址和端口,(IP地址,端口)。tuple類型
  • app:對處理請求的Sanic應(yīng)用程序?qū)ο蟮囊谩?/li>
@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:獲取與請求關(guān)聯(lián)的URL方案:httphttps
  • host:獲取與請求關(guān)聯(lián)的主機(jī)
  • path:獲取請求的路徑,如:/get_app_info
  • query_string:獲取查詢的字符串,如:name=zhangsan或者為一個(gè)空白字符串
  • uri_template:獲取匹配路由處理程序的模板,如:/get/<id>
  • token:授權(quán)標(biāo)頭的值

get與getlist

當(dāng)我們訪問一個(gè)GET請求,并傳入相關(guān)參數(shù)時(shí),如下的請求:

@app.route("/get_info")
async def get_info(request):
  print(request.args.get("name"))
  print(request.args.getlist("name")
  return text("it is ok!")

當(dāng)我們傳入一個(gè)namelaozhang時(shí),在上面有提到,args字典將會(huì)是{"name":["laozhang"],所以,訪問上面的路由,將會(huì)打印如下結(jié)果:

laozhang
["laozhang"]

響應(yīng)

使用sanic.response模塊中的函數(shù)來創(chuàng)建響應(yīng)

純文本:

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("<p>it is html!</p>")

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關(guān)鍵字

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關(guān)鍵字

重定向:

from sanic.response import redirect
@app.route("/redirect")
async def get_redirect(request):
  return redirect("/json")

RAW:未編碼的body響應(yīng)

from sanic.response import raw
@app.route("/raw")
async def get_raw(request):
  return raw(b"it is raw data")

訪問此接口后,將會(huì)立即下載一個(gè)名為raw的文件,里面包含內(nèi)容it is raw data

修改請求頭和狀態(tài)值:如果需要修改請求頭和狀態(tài)值,請將headersstatus參數(shù)傳遞給上面這些函數(shù),下面以json為例

from sanic.response import json
@app.route("/json")
async def get_json(request):
  return json({"name":"老張"},headers={"age":18},status=403)

訪問此接口后,會(huì)發(fā)現(xiàn)原來本應(yīng)是200的狀態(tài)值變成了403,而且請求頭信息中增加了{"age":18}

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python入門與進(jìn)階經(jīng)典教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • python編程Flask框架簡單使用教程

    python編程Flask框架簡單使用教程

    這篇文章主要為大家介紹了python編程中Flask框架簡單使用教程,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-11-11
  • python使用布隆過濾器的實(shí)現(xiàn)示例

    python使用布隆過濾器的實(shí)現(xiàn)示例

    這篇文章主要介紹了python使用布隆過濾器的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python實(shí)時(shí)獲取cmd的輸出

    Python實(shí)時(shí)獲取cmd的輸出

    本文給大家分享python實(shí)時(shí)獲取cmd的輸出,對python實(shí)時(shí)獲取輸出相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • python腳本定時(shí)發(fā)送郵件

    python腳本定時(shí)發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了python腳本定時(shí)發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 基于Linux系統(tǒng)中python matplotlib畫圖的中文顯示問題的解決方法

    基于Linux系統(tǒng)中python matplotlib畫圖的中文顯示問題的解決方法

    下面小編就為大家?guī)硪黄贚inux系統(tǒng)中python matplotlib畫圖的中文顯示問題的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • pytorch?collate_fn的基礎(chǔ)與應(yīng)用教程

    pytorch?collate_fn的基礎(chǔ)與應(yīng)用教程

    這篇文章主要給大家介紹了關(guān)于pytorch?collate_fn基礎(chǔ)與應(yīng)用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02
  • python每5分鐘從kafka中提取數(shù)據(jù)的例子

    python每5分鐘從kafka中提取數(shù)據(jù)的例子

    今天小編就為大家分享一篇python每5分鐘從kafka中提取數(shù)據(jù)的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python中提高pip install速度

    python中提高pip install速度

    本文給大家分享了如何提高pip install速度的方法,其實(shí)就是將默認(rèn)源替換為國內(nèi)高速的源,非常的簡單實(shí)用,有需要的小伙伴可以參考下
    2020-02-02
  • 簡單了解python gevent 協(xié)程使用及作用

    簡單了解python gevent 協(xié)程使用及作用

    這篇文章主要介紹了簡單了解python gevent 協(xié)程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python的生成器函數(shù)詳解

    Python的生成器函數(shù)詳解

    這篇文章主要介紹了Python的生成器函數(shù),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02

最新評論

临湘市| 德州市| 花垣县| 利川市| 宝山区| 平武县| 新平| 吉首市| 荥经县| 吉安市| 浮山县| 怀宁县| 余庆县| 青川县| 普安县| 岳普湖县| 灵武市| 屏边| 哈密市| 灵丘县| 洛隆县| 山阳县| 乐都县| 长沙县| 抚州市| 建昌县| 山东| 紫金县| 广昌县| 张家川| 尼木县| 获嘉县| 伊宁县| 赣州市| 镇康县| 梁平县| 库尔勒市| 陆丰市| 姚安县| 广宗县| 江山市|