中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

怎么使用flask獲取post請求參數

發布時間:2022-08-08 15:23:25 來源:億速云 閱讀:345 作者:iii 欄目:開發技術

這篇文章主要介紹“怎么使用flask獲取post請求參數”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么使用flask獲取post請求參數”文章能幫助大家解決問題。

概述

對于post請求 有幾種方式。 Content-Type 實體頭部用于指示資源的MIME類型 media type 。

content-type是http請求頭的字段。作為請求頭時(post或者put),客戶端告訴服務器實際發送的數據類型。

對于不同的content-type 發送的數據不太一樣,對于服務器端,需要如何獲取數據,以及正確解析的方法也是不一樣的。

下面列出常用的幾種 Content-Type

  • application/json

  • application/x-www-form-urlencoded

  • multipart/form-data

  • text/plain

  • text/xml

  • text/html

1. application/json

Content-Type 以這種方式的api ,目前來說還是比較多的,現在主流前后端交互的api,使用application/json 這種方式 傳輸數據 非常常見。 主要得意于json 的發展,以及前后端完善的庫支持,使得這種方式 比較常見。

這里以login 登錄接口為例

http 請求報文格式如下:

POST /login HTTP/1.1
Host: 127.0.0.1:5000
Content-Type: application/json
Content-Length: 59

{
    "username":"frank",
    "password":"jsdofjdsofjsdo"
}

使用curl

curl --location --request POST 'http://127.0.0.1:5000/login' \
--header 'Content-Type: application/json' \
--data-raw '{
    "username":"frank",
    "password":"jsdofjdsofjsdo"
}'

postman 請求

怎么使用flask獲取post請求參數

flask如何獲取請求體呢

對于這種請求方式 ,flask 如何獲取請求的body 的內容呢?

# main.py
from flask import Flask
from flask import request
from flask import jsonify
# pip install pysimple-log
from simplelog import logger

app = Flask(__name__)

@app.route('/login', methods=[ 'POST'])
def login():
    if request.method == 'POST':
        # 這樣獲取就可以了 
        json_data = request.json
        logger.info(f"json_data:{json_data}")
        return jsonify(json_data)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

我們直接可以通過, flask 提供的request對象獲取參數。 request.json 通過這個屬性 就可以獲取到 request body 的內容了。是不是很方便呢。

2. application/x-www-form-urlencoded

這種方式是 瀏覽器原生form表單默認的提交方式

http 請求報文格式

POST /login HTTP/1.1
Host: 127.0.0.1:5000
Content-Type: application/x-www-form-urlencoded
Content-Length: 38

username=frank&password=jsdofjdsofjsdo

使用curl 請求

curl --location --request POST 'http://127.0.0.1:5000/login' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'username=frank' \
--data-urlencode 'password=jsdofjdsofjsdo'

flask如何獲取請求體呢

對于這中content-type 我們可以使用 request.form 返回一個不可變的字典類型。 然后就可以獲取 request body 啦。

# 省略 ...
@app.route('/login', methods=[ 'POST'])
def login():
    if request.method == 'POST':
        json_data = request.form
        logger.info(f"json_data:{json_data}")
        return jsonify(json_data)

3. multipart/form-data

這又是一個常見的 POST 數據提交的方式。我們使用表單上傳文件時,必須讓 form 表單的enctype 等于 multipart/form-data。直接來看一個請求示例:

這里我只是演示 一下,對應 http報文

http 請求報文

POST /login HTTP/1.1
Host: 127.0.0.1:5000
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Length: 239

----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="username"

frank
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="password"

111111sfsfsafsafas==
----WebKitFormBoundary7MA4YWxkTrZu0gW

使用curl 請求

curl --location --request POST 'http://127.0.0.1:5000/login' \
--form 'username="frank"' \
--form 'password="111111sfsfsafsafas=="'

postman 請求

怎么使用flask獲取post請求參數

flask如何獲取請求體呢

對于這種方式還是可以通過 request.from 來獲取參數

# ... 省略
@app.route('/login', methods=[ 'POST'])
def login():
    if request.method == 'POST':
        json_data = request.form
        logger.info(f"json_data:{json_data}")
        return jsonify(json_data)

4. text/plain

用純文本發送數據

http 請求報文如下

POST /login HTTP/1.1
Host: 127.0.0.1:5000
Content-Type: text/plain
Content-Length: 59

{
    "username":"frank",
    "password":"jsdofjdsofjsdo"
}

使用curl 請求

curl --location --request POST 'http://127.0.0.1:5000/login' \
--header 'Content-Type: text/plain' \
--data-raw '{
    "username":"frank",
    "password":"jsdofjdsofjsdo"
}'

postman 請求

怎么使用flask獲取post請求參數

flask如何獲取請求體呢

flask 如何正常接收數據呢? 原生的請求數據會放在 request.data 里面,類型是bytes,需要轉成字符串,然后通過json 模塊轉成字典。

import json
from flask import Flask
from flask import request
from flask import jsonify
# pip install pysimple-log
from simplelog import logger

app = Flask(__name__)

@app.route('/login', methods=['POST'])
def login():
    if request.method == 'POST':
        # bytes 類型
        raw_data = request.data
        logger.info(f'raw_data:{raw_data}')
        json_data = json.loads(raw_data.decode())
        logger.info(f"json_data:{json_data},type:{type(json_data)}")
        return jsonify(json_data)

結果如下:

怎么使用flask獲取post請求參數

可以看出可以正常解析數據了,并且以json 的形式返回了。

關于“怎么使用flask獲取post請求參數”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

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

AI

邹平县| 广平县| 奇台县| 黄梅县| 安康市| 东乡族自治县| 张家川| 洛南县| 香格里拉县| 西贡区| 柳州市| 平泉县| 驻马店市| 临江市| 个旧市| 电白县| 武川县| 兴国县| 通海县| 新晃| 舞钢市| 得荣县| 察隅县| 绥中县| 句容市| 闸北区| 浮梁县| 肇东市| 南通市| 朔州市| 鄂托克旗| 沛县| 定西市| 开平市| 房产| 石河子市| 霍山县| 芜湖县| 容城县| 延长县| 余江县|