在Flask中构建REST API,在尝试发出POST请求时遇到400错误

时间:2016-11-04 04:21:33

标签: python curl flask

我正在关注教程here,而我正在开始设置create_task函数的部分。我一直收到错误

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 <title>400 Bad Request</title>
 <h1>Bad Request</h1>
 <p>The browser (or proxy) sent a request that this server could not understand.</p>

我在Windows上使用cURL命令

curl -i -H "Content-Type: application/json" -X POST -d '{"title":"Read a book"}' http://localhost:5000/api/v1.0/tasks

这是我的代码

#!flask/bin/python
from flask import Flask, jsonify, abort, make_response, request

app = Flask(__name__)

tasks = [
    {
        'id': 1,
        'title': u'Buy groceries',
        'description': u'Milk, Cheese, Pizza, Fruit, Tylenol',
        'done': False
    },
    {
        'id': 2,
        'title': u'Learn Python',
        'description': u'Need to find a good Python tutorial on the Web',
        'done': False
    }
    ]

@app.errorhandler(404)
def not_found(error):
    return make_response(jsonify({'404': 'Resource Not Found'}), 404)

@app.route('/api/v1.0/tasks/<int:task_id>', methods=['GET'])
def get_task(task_id):
    task = [task for task in tasks if task['id'] == task_id]
    if len(task) == 0:
        abort(404)
    return jsonify({'task': task[0]})

@app.route('/api/v1.0/tasks', methods=['POST'])
def create_task():
    if not request.json or not 'title' in request.json:
        abort(404)
    task = {
        'id': tasks[-1]['id'] + 1,
        'title': request.json['title'],
        'description': request.json.get('description', ""),
        'done': False
    }
    tasks.append(task)
    return jsonify({'task': task}), 201

if __name__ == '__main__':
    app.run()

我已经尝试了我能想到的一切。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您的代码完美无缺。尝试重新安装烧瓶。

您也可以尝试通过POSTMAN(Chrome插件)发送请求,而不是cURL。

通过cURL: Right side window shows the Result

右侧窗口显示结果

通过Postman(Chrome插件):

enter image description here