Конечная точка Flask api проходит только первый аргумент

Я использую 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. Маршрутизация URL-адреса Flask: url_for передает только первый аргумент

  2. Получите данные, полученные в запросе Flask


person Mark    schedule 20.11.2019    source источник
comment
Вы пробовали значения по умолчанию для аргументов? Например request.args.get("email_type", "")   -  person ipinak    schedule 20.11.2019


Ответы (1)


Bash должен интерпретировать вещи по-другому, добавляя "" работает.

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

person Mark    schedule 20.11.2019