【问题标题】:Flask api endpoint only passes first arguementFlask api 端点只传递第一个参数
【发布时间】:2020-03-16 11:23:01
【问题描述】:

我在端点上使用curl

http://0.0.0.0:5001/event/email/?event_type=open&email_type=questions

我得到的结果是

{
    "email_type": null,
    "event_type": "open"
}

为什么我得到null 换成email_type?我怀疑这与 Flask 如何处理 & 有关?

我的部分代码如下:

from flask import Flask, request
from flask_restful import Resource, Api

app = Flask(__name__)
api = Api(app)

class EmailOpen(Resource):

    def get(self):
        email_type = request.args.get("email_type")
        event_type = request.args.get("event_type")

        ad_id = request.args.get("ad_id")
        # print(event_type,email_type)
        if not ad_id:
            return {"event_type":event_type,"email_type":email_type}
        return {"event_type":event_type,"email_type":email_type,"ad_id":ad_id}

api.add_resource(EmailOpen, '/event/email/')

我查找过有类似问题的人,但他们似乎与我的情况不完全匹配

  1. Flask URL routing : url_for only passes first argument

  2. Get the data received in a Flask request

【问题讨论】:

  • 您是否尝试过 args 的默认值?例如request.args.get("email_type", "")

标签: python flask flask-restful


【解决方案1】:

Bash 必须以不同的方式解释事物,添加 "" 有效。

curl "http://0.0.0.0:5001/event/email/?event_type=open&email_type=questions"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-03
    • 2018-11-07
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多