【问题标题】:Pass variable via curl to Flask endpoint通过 curl 将变量传递给 Flask 端点
【发布时间】:2019-11-07 09:42:08
【问题描述】:

使用这个:

query_string = "This is some string"
subprocess.call('curl -X POST -d "{\\"query\\":\\"${query_string}\\"}" 0.0.0.0:5000/query --header "Content-Type:application/json"', shell=True)

并在我的 Flask 应用中拥有此端点:

@app.route('/query', methods=['GET', 'POST'])

def new_user():
   user_data = request.get_json()  
   print(user_data)

return jsonify(user_data)

当我运行上面定义的 curl 命令时,我从 Flask 服务器得到的响应是:

"POST /query HTTP/1.1" 200 - {'query': ''}

如何将参数的实际内容:query_string 传递给 Flask 端点?

【问题讨论】:

    标签: python variables curl flask parameters


    【解决方案1】:

    你需要像这样传递它:

    subprocess.call('curl -X POST -d "query=%s" 0.0.0.0:5000/query --header "Content-Type:application/json"'% query_string, shell=True)
    

    【讨论】:

    • 嗨,如果我运行这个建议,我会得到:“参数列表太长”错误。
    • query_string 到底是什么?看到这个stackoverflow.com/questions/54090784/…
    • 问题是我不能以某种方式让 curl 将 query_string 作为变量读取并将其内容传递给端点。我也试过: var = 'this is a string to pass' ; subprocess.call('curl localhost:5000\?name\=\"{$var}"', shell=True)
    • query_string 包含一个字符串
    • 这个错误,因为我尝试传递的字符串太长而出现。但它适用于短字符串。感谢您的帮助,我会在获得声誉后立即为您的回答投票!
    猜你喜欢
    • 2019-01-02
    • 2015-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 2014-07-10
    相关资源
    最近更新 更多