似乎可以弄清楚为什么在请求参数中通过值循环循环是拆分值

发布于 2025-01-21 00:13:18 字数 1599 浏览 2 评论 0原文

因此,我尝试循环访问 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)

So I'm trying to loop through the values stored in an API parameter in Flask.
The issue I'm running into is that the values are getting printed as individual letters, instead of returning all the comma separated values. I was wondering if this was because I'm not supposed to be passing a list to my 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)

Edit:

This is my modified code after getting a response.

-----------------------
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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

¢好甜 2025-01-28 00:13:18

您注入的参数不正确。这就是您所做的:

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})

You are injecting your parameters incorrectly. Here's what you did:

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']"

Here's what should have been done:


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'

In the first example, all of the fruits are being sent as a string representation of a list, in the second they are sent as individual query parameters. As just a regular requests call:

r = requests.get('https://127.0.0.1:9000/food', params={'fruits': fruits})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文