我在通过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
我想添加一个新字段,但我不能。我做错了什么,我该做什么?
答案 0 :(得分:0)
我在这里稍微讨论一下,但我会假设这是因为你没有在cUrl请求中指定Content-Type标头。尝试将-H "Content-Type: application/json"
添加到您的cUrl命令。 Werkzeug的请求对象可能不会默认为json。