我有以下 POST 請求:
import requests
payload = {'key1':'value1'}
r = requests.post('http://127.0.0.1:5000/test', params=payload)
print(r.url)
print(r.text)
我的燒瓶應用程式嘗試從 key1 回傳值:
from flask import Flask, request
app = Flask(__name__)
@app.route('/test', methods = ["GET", "POST"])
def query_params():
val = request.args.get("key1")
return val
去http://127.0.0.1:5000/test回傳
TypeError TypeError:“query_params”的視圖函式未回傳有效回應。該函式要么回傳 None ,要么在沒有 return 陳述句的情況下結束。
燒瓶除錯器的輸出:
127.0.0.1 - - [21/May/2022 21:47:17] “POST /test?key1=value1 HTTP/1.1”200 -
我在這里想念什么?非常感謝您的幫助!
干杯,馬里奧
uj5u.com熱心網友回復:
當您http://127.0.0.1:5000/test從瀏覽器訪問時,它是一個 GET 請求,并且您的請求中沒有傳遞任何引數。
如果您訪問http://127.0.0.1:5000/test?key1=value1,您的預期輸出將被列印出來。
關于requests.post您使用的片段:如果您看到檔案,params通常用于 GET 請求,POSTS 獲取data引數。但似乎您的代碼有效,它將引數附加到請求中(就像在 GET 中發生的那樣)并發出 POST 請求。有趣的發現!
r = requests.post('http://127.0.0.1:8000/test', data=payload)
如果引數不存在,您可以通過使用“回退”值來增強代碼:
@app.route('/test', methods = ["GET", "POST"])
def query_params():
val = request.args.get("key1", "parameter was not provided")
return val
總而言之,我認為您應該決定提交資料的請求方法應該是 GET 還是 POST,然后相應地更新您的代碼(如果 GET,您的代碼段是可以的,如果您應該使用 POST,請嘗試切換params到data然后你的燒瓶路由代碼使用新的有效載荷“格式”。
更新代碼以“如果燒瓶應用程式收到帶有特定鍵:值對的 POST 請求,則啟動 python 腳本”:
@app.route('/test', methods = ["GET", "POST"])
def query_params():
if request.method == 'POST':
val = request.args.get("the expected key", "parameter was not provided")
if val == "the expected value":
# do the things you want to do
return "processing done!"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/479649.html
上一篇:node-gyp中缺少v8.h
