91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django中如何優雅的在某接口對其他接口的調用

發布時間:2021-12-08 15:37:34 來源:億速云 閱讀:487 作者:柒染 欄目:大數據

Django中如何優雅的在某接口對其他接口的調用,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

開發中遇到的某個實際場景,在 django 中新增加一個 API 接口, 該接口部分的功能需要用到另一個接口的返回數據。

一個不那么優雅的解決方案是:在新接口中以 HTTP 請求的方式調用另一個接口,在理論上該方案是可行。

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

更好的方案是通過函數調用的方式,在新接口中調用前接口的視圖函數!我們都知道,Django 的請求數據都包裝在 HttpRequest 對象中,既然我們要調用另一個接口的視圖函數

那么就需要對 HttpRequest 對象進行封裝,所以有必要了解一下 HttpRequest 對象

下面是我調試的圖,request 對象的屬性值都能一目了然

Django中如何優雅的在某接口對其他接口的調用  

這里并不需要關注其他,我們只需要修改請求相關數據就可以

  • GET 包含所有 GET 參數的類字典對象
  • POST 包含所有 POST 參數的類字典對象
  • headeers 請求頭相關
  • method 請求方法
  • body 請求體,POST 方法的數據就是從這里獲取的

OK,了解上面所說的請求相關的數據就可以來構造我們自己請求體,然后調用前接口就可以了

這里有個小問題需要注意下 body 是 bytes 的數據類型,所以賦值的時候需要將字典類型轉成 bytes,下面是該請求的原數據

Django中如何優雅的在某接口對其他接口的調用  

接下來我將用 data 編碼后數據類型重新賦值給 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
 

在輸完最后一行賦值代碼后,報錯了

Django中如何優雅的在某接口對其他接口的調用  

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

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

賦值之后我們再來查看下 body 的值

Django中如何優雅的在某接口對其他接口的調用  

可以看到,已經修改成我們想要的數據了。接下來將這個 request 對象傳給之前的接口就完事了!

看完上述內容,你們掌握Django中如何優雅的在某接口對其他接口的調用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

呈贡县| 株洲市| 合水县| 苍南县| 镶黄旗| 天等县| 旌德县| 莱阳市| 松阳县| 阿拉善右旗| 连江县| 西贡区| 宜城市| 文安县| 株洲市| 综艺| 盘锦市| 常宁市| 桓仁| 阳信县| 淮阳县| 子洲县| 子长县| 白河县| 晴隆县| 阳新县| 许昌市| 诏安县| 宁安市| 通辽市| 东丰县| 富宁县| 安仁县| 裕民县| 林州市| 邹城市| 安溪县| 太白县| 沭阳县| 镇巴县| 平山县|