POST curl返回错误请求400(flask,RESTful)

时间:2015-07-16 06:47:52

标签: python post flask

我在通过curl发布JSON时遇到问题。 我最近开始研究网络的发展。我阅读了Miguel Grinberg的指南,查看所有可能的资源。我想POST到json新领域。 如果请求中缺少任何参数,则为400。

from flask import Flask, request
from flask_restful import reqparse, abort, Api, Resource
import json
app = Flask(__name__)
api = Api(app)

DATA = {
    'id': 1111,
    'Label': {'0.5': 'letter'},
}

def abort_if_no_data(key):
    if key not in DATA:
        abort(404)

class Data(Resource):
    def __init__(self):
        self.reqparse = reqparse.RequestParser()

    def get(self, key):
        abort_if_no_data(key)
        return DATA[key]

    def delete(self, key):
        del DATA[key]
        return '', 200

    def put(self, key):
        abort_if_no_data(key)
        args = self.reqparse.parse_args()
        for key, value in args.items():
            DATA[key] = value

            return args, 200


class DataList(Resource):

    def __init__(self):
        self.reqparse = reqparse.RequestParser()

    def post(self):
        args = self.reqparse.parse_args()
        if args is not request.json:
            abort(400)
        for key, value in args.items():
            DATA[0] = {key: value}
            return DATA[key], 201

api.add_resource(DataList, '/test')
api.add_resource(Data, '/test/<key>')

所以,当我尝试用

卷曲时
curl -X POST --data '{"value": 41}' http://localhost:5000/test

服务器以错误请求400回答

{
    "message": "Bad Request", 
    "status": 400
}
* Closing connection 0

我想添加一个新字段,但我不能。我做错了什么,我该做什么?

1 个答案:

答案 0 :(得分:0)

我在这里稍微讨论一下,但我会假设这是因为你没有在cUrl请求中指定Content-Type标头。尝试将-H "Content-Type: application/json"添加到您的cUrl命令。 Werkzeug的请求对象可能不会默认为json。