使用Flask.Request的方法和屬性,獲取get和post請求參數(二)

1、Flask中的request

在Python發送Post、Get等請求時,我們使用到requests庫。Flask中有一個request庫,有其特有的一些方法和屬性,注意跟requests不是同一個。

2、Post請求:request.get_data()

用于服務端獲取客戶端請求數據。注意:是未經任何處理的原始數據而不管內容類型,如果數據時json的,則取得是json字符串,排序和請求參數一致。

2.1 Flask代碼

不同方法的示例僅需要更換視圖函數,后續僅展示視圖函數。

# 注意:flask中的request和requests庫不是同一個,要區分開
from flask import Flask, request# 創建一個flask實例
app = Flask(__name__)# 視圖函數,只允許get和post請求
@app.route('/', methods=['GET', 'POST'])
def request_flask():# 獲取未經處理過的原始數據而不管內容類型,如果數據格式是json的# 則取得是json字符串,排序和請求參數一致data = request.get_data()print(data)print(type(data))return 'hello world'if __name__ == '__main__':app.run()

2.2 測試代碼(一直應用于后續章節,不再贅述)

import requestsdata = {"username": "cc","password": "123456"
}url = "http://127.0.0.1:5000/"
resp = requests.post(url=url, json=data)
print('post:', resp)
print('post:', resp.text)resp = requests.get(url=url, params=data)
print('get:', resp)
print('get:', resp.text)

2.3 執行效果

2.3.1 Flask

get.data()獲取到的請求數據是字節流,排序和請求參數一致。
在這里插入圖片描述

2.3.2 請求結果

get和post請求都成功了。
在這里插入圖片描述

3、Post請求:request.data

獲取到的也是未經處理的原始數據,如果數據格式是json的,則取得是json字符串,排序和請求參數一致。request.get_data()效果一樣

4、Post請求:request.get_json()

將請求參數做了處理,得到字典格式,因此排序會打亂,依據字典排序規則

4.1 Flask代碼

# 視圖函數,只允許get和post請求
@app.route('/', methods=['GET', 'POST'])
def request_flask():# 將請求參數做了處理,得到字典格式,因此排序會打亂,依據字典排序規則。data = request.get_json()print(data)print(type(data))# 服務端就可以根據字典進行取值username = request.get_json()["username"]print(username)return 'hello world'

4.2 執行效果

4.2.1 Flask

將請求參數做了處理,得到字典格式,方便服務端按鍵取值,提取到username是“cc”。

注意:get請求是沒有字典的,不能夠取值,運行時可以注釋掉get方法。
在這里插入圖片描述

4.2.2 請求結果

post請求成功。
在這里插入圖片描述

5、Post請求:request.json

跟request.get_json()效果相同。得到的是字典格式的,因此排序會打亂,依據字典排序規則。

代碼如下:

# 視圖函數,只允許get和post請求
@app.route('/', methods=['GET', 'POST'])
def request_flask():# 將請求參數做了處理,得到的是字典格式的,因此排序會打亂,依據字典排序規則data = request.jsonprint(data)print(type(data))# 如果這里的key服務端寫錯了,客戶端請求時,就會出現500username = request.json['username']print(username)return 'hello world'

6、Get請求:request.args.get()

6.1 Flask代碼

# 視圖函數,只允許get和post請求
@app.route('/', methods=['GET', 'POST'])
def request_flask():# 可以獲取單個的值username = request.args.get("username")print(username)return 'hello world'

6.2 執行結果

服務端拿到了username的值“cc”
在這里插入圖片描述

7、Get請求:request.args.to_dict()

7.1 Flask代碼

# 視圖函數,只允許get和post請求
@app.route('/', methods=['GET', 'POST'])
def request_flask():# 可以獲取get請求的所有參數,返回值是ImmutableMutiDict(不可變的多字典)類型i = request.argsprint(i)# 將獲得的參數轉化成字典j =  i.to_dict()print(j)print(type(j))print(j["username"])return 'hello world'

7.2 執行結果

在這里插入圖片描述

8、模擬請求報錯

8.1 500 Internal Server Error

當服務端key寫錯時,就會報500錯誤,例如可以把key username改成usename,運行后看下效果。
在這里插入圖片描述在這里插入圖片描述

8.2 404 Not Found

僅創建了實例,并沒有視圖函數,啟動socket服務后,訪問地址就會報404。或者請求url填寫錯誤。

from flask import Flask# 創建一個flask實例
app = Flask(__name__)if __name__ == '__main__':app.run()

在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35413.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35413.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35413.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

理解ConcurrentSkipListMap(有點類似于并發的TreeMap)

是一個分層的結構。 從最上面開始查找,最后層層往下查。 插入和刪除有可能會引起節點Level的變更。 key是有序的,因此可以看做是并發的TreeMap

ubuntu18.04下配置muduoC++11環境

1.安裝muduo依賴的編譯工具及庫 Cmake sudo apt-get install cmakeBoost sudo apt-get install libboost-dev libboost-test-devcurl、c-ares DNS、google protobuf sudo apt-get install libcurl4-openssl-dev libc-ares-dev sudo apt-get install protobuf-compiler libp…

帶你了解SpringBoot支持的復雜參數--自定義對象參數-自動封裝

😀前言 本篇博文是關于SpringBoot 在響應客戶端請求時支持的復雜參數和自定義對象參數,希望您能夠喜歡😊 🏠個人主頁:晨犀主頁 🧑個人簡介:大家好,我是晨犀,希望我的文章…

go struct 的常見問題

go struct 的常見問題 1. 什么是struct?2. 如何聲明、定義和創建一個struct?3. struct和其他數據類型(如數組、切片、map等)有什么區別?4. 如何訪問struct字段?5. struct是否支持繼承,是否支持重…

JavaWeb_xml

文章目錄 1.xml是什么?2.xml的用途 1.xml是什么? xml 是可擴展的標記性語言 2.xml的用途 1、用來保存數據,而且這些數據具有自我描述性 2、它還可以做為項目或者模塊的配置文件 3、還可以做為網絡傳輸數據的格式(現在 JSON 為主…

【Github】SourceTree技巧匯總

sourceTree登錄github賬戶 會跳轉到瀏覽器端 按照Git Flow 初始化倉庫分支 克隆遠程倉庫到本地 推送變更到遠程倉庫 合并分支 可以看到目前的本地分支(main、iOS_JS)和遠程分支(origin/main、origin/HEAD、origin/iOS_JS)目前所處…

5134. 簡單判斷

文章目錄 Question輸入樣例1: 3 7 0 輸出樣例1: IdeasCode Question 給定三個非負整數 x,y,z ,請你按如下要求進行判斷并輸出相應結果: 如果 x>yz ,則輸出 。 如果 y>xz ,則輸出 -。 如果 xy 且 z0…

pip install總是報錯:ValueError: Trusted host URL must include a host part: ‘#‘

一、問題現象 報錯信息如下&#xff1a; Traceback (most recent call last):File "/user_name/anaconda3/bin/pip", line 11, in <module>sys.exit(main())^^^^^^File "/user_name/anaconda3/lib/python3.11/site-packages/pip/_internal/cli/main.py&…

14_基于Flink將pulsar數據寫入到HBase

3.7.基于Flink將數據寫入到HBase 3.7.1.編寫Flink完成數據寫入到Hbase操作, 完成數據備份, 便于后續進行即席查詢和離線分析 3.7.1.1.HBase基本介紹 hbase是基于Google發布bigTable論文產生一款軟件, 是一款noSQL型數據, 不支持SQL. 不支持join的操作, 沒有表關系, 不支持事…

Codeforces 757F. Team Rocket Rises Again 最短路 + 支配樹

題意&#xff1a; 給你 n 個點&#xff0c; m 條雙向邊&#xff0c;求爆了某個點后&#xff0c;從s出發的最短路距離&#xff0c;會改變最多的數量。 分析&#xff1a; 建出最短路樹&#xff08;DAG&#xff09;之后&#xff0c;在最短路樹上跑一下支配樹&#xff0c;找出支…

鏈表OJ詳解

&#x1f495;人生不滿百&#xff0c;常懷千歲憂&#x1f495; 作者&#xff1a;Mylvzi 文章主要內容&#xff1a;鏈表oj詳解 題目一&#xff1a;移除元素 題目要求&#xff1a; 畫圖分析&#xff1a; 代碼實現&#xff1a; struct ListNode* removeElements(struct List…

flutter項目 環境搭建

開發flutter項目 搭建工具環境 flutter項目本身 所需開發工具環境 flutter 谷歌公司開發 系統支持庫 鏡像庫 搭建流程&#xff1a; flutter 官網&#xff1a; https://flutter.dev/community/china //步驟1 .bash_profile touch .bash_profile pwd /Users/haijunyan open ~ e…

商品首頁(sass+git本地初始化)

目錄 安裝sass/sass-loader 首頁(vue-setup) 使用git本地提交 同步遠程git庫 安裝sass/sass-loader #安裝sass npm i sass -D#安裝sass-loader npm i sass-loader10.1.1 -D 首頁(vue-setup) <template><view class"u-wrap"><!-- 輪播圖 --><…

C++lambda表達式

先來說背景&#xff1a;當我們需要對一些的元素進行排序的時候&#xff0c;可以使用std::sort來進行排序&#xff0c;而當需要對一些自定義類型的元素來排序的時候&#xff0c;要去寫一個類&#xff0c;或者說是需要寫一個仿函數&#xff0c;而如果功能要求上需要根據不同的比較…

基于chatgpt動手實現一個ai_translator

動手實現一個ai翻譯 前言 最近在極客時間學習《AI 大模型應用開發實戰營》&#xff0c;自己一邊跟著學一邊開發了一個進階版本的 OpenAI-Translator&#xff0c;在這里簡單記錄下開發過程和心得體會&#xff0c;供有興趣的同學參考&#xff1b; ai翻譯程序 版本迭代 在學習…

VLC播放主要流程

前言 VLC 播放流程大概是先加載解封裝器,然后通過es_out控制所有的stream。然后會加載decoder。最終通過resource文件的方法交給輸出 模塊。下面簡要介紹。 正文 播放器主要分為三層。主要通過兩個接口實現了功能隔離。分別是es_out.c和decoder.c的實現了&#xff1a; //控…

算法練習-搜索 相關

文章目錄 迷宮問題 迷宮問題 定義一個二維數組 m行 * n列 &#xff0c;如 4 5 數組下所示&#xff1a; int arr[5][5] { 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, }; 它表示一個迷宮&#xff0c;1表示墻壁&#xff0c;0表示可以走的路&#xff0c;只…

Synchronized八鎖

/** * Description: 8 鎖 * 1 標準訪問&#xff0c;先打印短信還是郵件 ------sendSMS ------sendEmail 2 停 4 秒在短信方法內&#xff0c;先打印短信還是郵件 ------sendSMS ------sendEmail 3 新增普通的 hello 方法&#xff0c;是先打短信還是 hello ------getHello ------…

Idea中使用statement接口對象,顯示mysql版本號,所有庫和表名

使用statement 接口對象&#xff0c;進行以下操作&#xff1a; 顯示數據庫版本號顯示所有庫顯示所有庫中的table表 顯示數據庫版本號&#xff1a; public class StatementDemo {Testvoid showall(){try{Statement st conn.createStatement();ResultSet rs st.executeQuery(…

pytest fixture 常用參數

fixture 常用的參數 參數一&#xff1a;autouse&#xff0c;作用&#xff1a;自動運行&#xff0c;無需調用 舉例一&#xff1a;我們在類中定義一個function 范圍的fixture; 設置它自動執行autouseTrue&#xff0c;那么我們看下它執行結果 輸出&#xff1a; 說明&#xff1a;…