【问题标题】:Flask restful: dynamical parameter with POSTFlask restful:带有 POST 的动态参数
【发布时间】:2019-05-04 09:12:27
【问题描述】:

我想为 API 解析一组动态参数。参数的数量不固定,因为调用 API 的一方是另一方。我想这样做,以便我的 API 能够接受附加参数,并且如果将来另一方进行任何更改,也可以包含它。

我想改变这个:

class PaymentReceive(Resource):
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('arg1', type=str, location="form")
        parser.add_argument('arg2', type=str, location="form")
        args = parser.parse_args()

这样的:

class PaymentReceive(Resource):
    def post(self):
        parsers = reqparse.RequestParser()
        for key, value in parsers.items():
            parser.add_argument(key, type=str, location="form")

        args = parser.parse_args()

我尝试了here中的方法,但无济于事。请帮忙

【问题讨论】:

  • 你在问什么?您应该查看How to ask a question 并修改您的帖子。您不仅需要针对特定​​项目提出直接而有针对性的问题,还需要展示您已经尝试解决问题的方式。
  • 我在 google 上搜索了一些使用相同关键字的内容。尝试了stackoverflow.com/questions/30779584/… 中使用的方法。它不适用于我的情况。
  • @Chase 我已经对帖子进行了一些编辑,我不知道它是否会帮助您更多地了解我正在尝试做的事情。

标签: python api flask dynamically-generated flask-restful


【解决方案1】:

如果您想解析一些动态值集,那么您应该只接受原始 JSON 有效负载,您可以根据需要对其进行迭代和解组。

在普通 Flask 中,

@app.route('/payment', methods=['POST'])
def receive_payment():
    content = request.json
    for k, v in content.items():
        print(k, v)
    # return some received id
    return jsonify({"payment_id":content['payment_id']})

【讨论】:

  • 这种方法似乎有效。只是我其他方需要在参数上使用json.dumps。没想到这么简单。谢谢。
  • 你也可以遍历一个表单,但我现在几乎总是使用 JSON over HTTP。而您是否json.dumps 取决于http 客户端。请求将允许您使用json= 参数拨打电话
  • 是的!我可以使用request.form.to_dict() 得到我想要的,不需要在参数中使用json.dumps
猜你喜欢
  • 2015-08-10
  • 2013-11-23
  • 1970-01-01
  • 2018-12-02
  • 2021-03-26
  • 1970-01-01
  • 2021-06-25
  • 2016-07-04
  • 2017-07-28
相关资源
最近更新 更多