簡體   English   中英

似乎無法弄清楚為什么循環請求參數中的值會拆分值

[英]Can't seem to figure out why looping through values in a request argument is splitting values

所以我試圖遍歷存儲在 Flask 中的 API 參數中的值。我遇到的問題是這些值被打印為單個字母,而不是返回所有逗號分隔值。 我想知道這是否是因為我不應該將列表傳遞給我的 API url?

-----------------------------------------------------------------------------------------------
main.py

fruits= ["orange", "apple", "lemon"]

for fruit in fruits:
    print(fruit) ---> orange 
                      apple 
                      lemon
 

response = requests.get(f"127.0.0.1:9000/food?fruits={fruits}")

-----------------------------------------------------------------------------------------------

flask_api.py

from flask import Flask

@app.route('/food', methods=['GET'])
def food():

fruits = request.args.get("fruits")
print(fruits) ---> ["orange", "apple", "lemon"]

for fruit in fruits:
    print(fruit) ---> [o r a n g e a p p l e l e m o n]


return fruits

if __name__ == "__main__":
    app.run(debug=True, port=9000)

編輯:

這是我收到回復后修改的代碼。

-----------------------
main.py

fruits= ["orange", "apple", "lemon"]

for fruit in fruits:
    print(fruit) ---> orange 
                      apple 
                      lemon
 

response = requests.get(f"127.0.0.1:9000/food", params={"fruits":fruits})

-----------------------------------------------------------------------------------------------

flask_api.py

from flask import Flask

@app.route('/food', methods=['GET'])
def food():

fruits = request.args.get("fruits")
print(fruits) ---> ["orange"]

for fruit in fruits:
    print(fruit) ---> [o r a n g e ]


return fruits

if __name__ == "__main__":
    app.run(debug=True, port=9000)

您錯誤地注入了參數。 這是你所做的:

from requests import Request

fruits = ['orange', 'lemon']

r = Request('GET',f'https://127.0.0.1:9000/food?fruits={fruits}')
u = r.prepare()
u.url

"https://127.0.0.1:9000/food?fruits=['orange',%20'lemon']"

這是應該做的:


r = Request('GET','https://127.0.0.1:9000/food', params={'fruits': fruits})
u = r.prepare()
u.url

'https://127.0.0.1:9000/food?fruits=orange&fruits=lemon'

在第一個示例中,所有水果都作為列表的字符串表示形式發送,在第二個示例中,它們作為單獨的查詢參數發送。 作為常規請求調用:

r = requests.get('https://127.0.0.1:9000/food', params={'fruits': fruits})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM