真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Django中如何優(yōu)雅的在某接口對(duì)其他接口的調(diào)用

Django中如何優(yōu)雅的在某接口對(duì)其他接口的調(diào)用,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及定制網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站制作,高端網(wǎng)頁制作,對(duì)柔性防護(hù)網(wǎng)等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化推廣哪家好,專業(yè)seo優(yōu)化排名優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。

開發(fā)中遇到的某個(gè)實(shí)際場(chǎng)景,在 django 中新增加一個(gè) API 接口, 該接口部分的功能需要用到另一個(gè)接口的返回?cái)?shù)據(jù)。

一個(gè)不那么優(yōu)雅的解決方案是:在新接口中以 HTTP 請(qǐng)求的方式調(diào)用另一個(gè)接口,在理論上該方案是可行。

但是也會(huì)帶來一系列的問題,比如性能并發(fā)等問題。畢竟 HTTP 通信建立連接等都有一定的耗時(shí)

更好的方案是通過函數(shù)調(diào)用的方式,在新接口中調(diào)用前接口的視圖函數(shù)!我們都知道,Django 的請(qǐng)求數(shù)據(jù)都包裝在 HttpRequest 對(duì)象中,既然我們要調(diào)用另一個(gè)接口的視圖函數(shù)

那么就需要對(duì) HttpRequest 對(duì)象進(jìn)行封裝,所以有必要了解一下 HttpRequest 對(duì)象

下面是我調(diào)試的圖,request 對(duì)象的屬性值都能一目了然

Django中如何優(yōu)雅的在某接口對(duì)其他接口的調(diào)用  

這里并不需要關(guān)注其他,我們只需要修改請(qǐng)求相關(guān)數(shù)據(jù)就可以

  • GET 包含所有 GET 參數(shù)的類字典對(duì)象
  • POST 包含所有 POST 參數(shù)的類字典對(duì)象
  • headeers 請(qǐng)求頭相關(guān)
  • method 請(qǐng)求方法
  • body 請(qǐng)求體,POST 方法的數(shù)據(jù)就是從這里獲取的

OK,了解上面所說的請(qǐng)求相關(guān)的數(shù)據(jù)就可以來構(gòu)造我們自己請(qǐng)求體,然后調(diào)用前接口就可以了

這里有個(gè)小問題需要注意下 body 是 bytes 的數(shù)據(jù)類型,所以賦值的時(shí)候需要將字典類型轉(zhuǎn)成 bytes,下面是該請(qǐng)求的原數(shù)據(jù)

Django中如何優(yōu)雅的在某接口對(duì)其他接口的調(diào)用  

接下來我將用 data 編碼后數(shù)據(jù)類型重新賦值給 request.body

>>> data = {"name": "jerry", "code": "Python"}
>>> import json
>>> data = json.dumps(data).encode(encoding="utf-8")
>>> data
b'"{\\"name\\": \\"jerry\\", \\"code\\": \\"Python\\"}"'
>>> request.body = data
 

在輸完最后一行賦值代碼后,報(bào)錯(cuò)了

Django中如何優(yōu)雅的在某接口對(duì)其他接口的調(diào)用  

提示不能重置,原來是 body 屬性是不可修改的。好在 django 還有另一個(gè)參數(shù) _body, 而且 body 屬性繼承自 _body 屬性, 所以直接修改 _body 屬性就好了

>>> request._body = data
>>> data
b'"{\\"name\\": \\"jerry\\", \\"code\\": \\"Python\\"}"
 

賦值之后我們?cè)賮聿榭聪?body 的值

Django中如何優(yōu)雅的在某接口對(duì)其他接口的調(diào)用  

可以看到,已經(jīng)修改成我們想要的數(shù)據(jù)了。接下來將這個(gè) request 對(duì)象傳給之前的接口就完事了!

看完上述內(nèi)容,你們掌握Django中如何優(yōu)雅的在某接口對(duì)其他接口的調(diào)用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


文章標(biāo)題:Django中如何優(yōu)雅的在某接口對(duì)其他接口的調(diào)用
轉(zhuǎn)載來于:http://weahome.cn/article/jjpdhh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部