【问题标题】:Flask not receiving arguments from curl postFlask 没有收到来自 curl 帖子的参数
【发布时间】:2019-05-30 03:46:52
【问题描述】:

尝试使用以下代码实现烧瓶 API:

import tweepy,flask,os,flask_api,re,json,logging    
app = flask.Flask(__name__,template_folder='')
@app.route('/',methods=['POST'])
def answer():
    app.logger.info('server responding')
    for key,value in flask.request.args.items():
        app.logger.info(key+':'+value)
    return 'Server on line'

@app.route('/',methods=['GET'])
def home():
    return flask.render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)#use_reloader=False
    logging.basicConfig(filename='error.log',level=logging.DEBUG)
    app.logger.info('Successfull info message')
    app.logger.error('Successfull error message')

当我尝试用 windows 卷曲它时,

curl -X POST -d query=cheese http://127.0.0.1:5000/

(长格式)

curl --header "Content-Type: application/json"  --request POST  --data '{"query":"cheese"}'   http://127.0.0.1:5000/

我明白了

 INFO in logtest: server responding

但没有返回单个键/值对

【问题讨论】:

    标签: python curl flask


    【解决方案1】:

    flask.request.argsURL query parameters

    curl --databody

    您正在发送请求正文,但希望它们显示在 URL 参数中。这显然行不通。

    您需要改为访问request.data。有一种方便的方法get_json(),您可以使用它让 Flask 为您将正文解析为字典。

    【讨论】:

    • get_json 失败,好像 curl 不是以 json 格式发送?
    • 另外,request.data 是空的。你能写出准确的台词吗?
    • 可能。您可以使用 is_json() 在烧瓶端进行检查:flask.pocoo.org/docs/1.0/api/#flask.Request.is_json
    • 在大多数情况下,request.data 是空的,因为它被用作后备。您要访问的属性应该是 get_json(),因为您将 application/json 作为 mimetype 传递。
    猜你喜欢
    • 2014-07-10
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 2015-03-25
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多