Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Flask中获取数据JSON_Python_Json_Curl_Flask_Cmd - Fatal编程技术网

Python 在Flask中获取数据JSON

Python 在Flask中获取数据JSON,python,json,curl,flask,cmd,Python,Json,Curl,Flask,Cmd,即使遵循这里和那里的许多示例,我也无法在POST方法中获得我的API工作。 下面是关于它的代码: from flask import Flask, jsonify, request @app.route('/api/v1/lists', methods=['POST']) def add_entry(): print("p0") content = request.get_json() appname = content.get('title') print(c

即使遵循这里和那里的许多示例,我也无法在POST方法中获得我的API工作。 下面是关于它的代码:

from flask import Flask, jsonify, request

@app.route('/api/v1/lists', methods=['POST'])
def add_entry():
    print("p0")
    content = request.get_json()
    appname = content.get('title')
    print(content)
    print(appname)
当我使用curl进行查询时(我在Windows上运行它):

curl.exe-i-H“内容类型:application/json”-X POST-d'{“title”:“titi”}”

curl.exe-i-H“Content Type:application/json”-X POST-d“{”“title”“:”“Read a book”“”}

我总是有400个错误作为回报:

HTTP/1.0 400错误请求 内容类型:text/html 内容长度:192 服务器:Werkzeug/0.12.1 Python/3.6.0 日期:2017年4月4日星期二21:55:29 GMT 400错误请求 错误的请求 浏览器(或代理)发送了此服务器无法理解的请求

我看不出错误在哪里


谢谢您的帮助。

您的
添加条目
功能没有返回响应。即使只是
返回“OK”
,也必须返回某些内容

编辑:您仍然没有返回任何内容。在
Flask
中,Python
print
语句与PHP的
echo
语句不同。
print
只需打印到控制台即可。您仍然必须返回一个值。如果需要返回
content
appname
JSON-encoded,则添加

返回json.load({'contents':contents'appname':appname})

直到你的功能结束


要想清楚,Flask视图中的必须返回一个值。Python函数隐式返回None是无关紧要的。发生的错误是您的函数没有返回语句。

在我的例子中,这里有一个代码:

@app.route('/api/v1/list', methods=['POST'])
def add_entry():
    print("p0")
    request_json = request.get_json()
    value1 = request_json.get('First_Name')
    value2 = request_json.get('Last_Name')
    if value1 is not None and value2 is not None:
        print("p3")
        cursor.execute("INSERT INTO person (first_name,last_name) VALUES (%s,%s)", (value1, value2))
        data = conn.commit()
        return jsonify(data)
即使使用“工作”代码,如果if块出现故障(当
value1
value2
None
时),也会导致相同的错误,因为您没有处理if块的
else
部分。更正的内容应为:

@app.route('/api/v1/list', methods=['POST'])
def add_entry():
    print("p0")
    request_json     = request.get_json()
    value1           = request_json.get('First_Name')
    value2           = request_json.get('Last_Name')
    response_content = None

    if value1 is not None and value2 is not None:
        print("p3")
        cursor.execute("INSERT INTO person (first_name,last_name) VALUES (%s,%s)", (value1, value2))
        response_content = conn.commit()

    return jsonify(response_content)

当然,你可能想要比无更好的回答。

Flask不喜欢它。我忘了在最初的帖子中添加打印内容。但是,当我使用curl时,仍然存在问题错误400,并且打印在控制台中没有返回任何内容,只有“p0”是打印的。对于其他问题:
POST
ing json via curl on Windows要求引号以不同方式转义,请参阅