Flask-restful API 不接受 json
Flask-restful API not accepting json
我正在努力学习如何做 apis。我完全复制了书中的所有内容,但我无法 post 到 api。我尝试将 posting {'name':'holy'}
作为 postman
中的原始数据(一个 json posting 工具)到 api,我得到了 vladation 帮助消息错误"No Name provided":但是当我尝试name=holy
时它工作正常。我认为它不应该像那样工作,我如何让它与 {'name':'holy'}
一起工作
from flask import Flask, request,render_template, jsonify
from flask_restful import Resource, Api,marshal_with, fields, reqparse
app = Flask(__name__)
api = Api(app)
class UserApi(Resource):
def __init__(self):
self.reqparse = reqparse.RequestParser()
self.reqparse.add_argument(
'name',
required=True,
help='No name provided',
location=['form', 'json']
)
def get(self):
return jsonify ({"first_name":"Holy","last_name": "Johnson"})
def post(self):
args = self.reqparse.parse_args()
return jsonify ({"first_name":"Holy","last_name": "Johnson"})
api.add_resource(UserApi, '/users')
if __name__ == '__main__':
app.run(debug=True)
您的代码应该可以工作 - 您必须指定请求 header Content-Type: application/json
。原因是因为 flask-restful
的 reqparse
模块试图解析 its data from flask.request.json
,只有在设置 Content-Type: application/json
时才会设置。
如果您有权访问 curl
(或 wget
),您可以执行以下操作来测试:
$shell> curl -X POST -H "Content-Type: application/json" -d '{"name": "holly"}' http://localhost:5000/users
{
"first_name": "Holy",
"last_name": "Johnson"
}
我正在努力学习如何做 apis。我完全复制了书中的所有内容,但我无法 post 到 api。我尝试将 posting {'name':'holy'}
作为 postman
中的原始数据(一个 json posting 工具)到 api,我得到了 vladation 帮助消息错误"No Name provided":但是当我尝试name=holy
时它工作正常。我认为它不应该像那样工作,我如何让它与 {'name':'holy'}
from flask import Flask, request,render_template, jsonify
from flask_restful import Resource, Api,marshal_with, fields, reqparse
app = Flask(__name__)
api = Api(app)
class UserApi(Resource):
def __init__(self):
self.reqparse = reqparse.RequestParser()
self.reqparse.add_argument(
'name',
required=True,
help='No name provided',
location=['form', 'json']
)
def get(self):
return jsonify ({"first_name":"Holy","last_name": "Johnson"})
def post(self):
args = self.reqparse.parse_args()
return jsonify ({"first_name":"Holy","last_name": "Johnson"})
api.add_resource(UserApi, '/users')
if __name__ == '__main__':
app.run(debug=True)
您的代码应该可以工作 - 您必须指定请求 header Content-Type: application/json
。原因是因为 flask-restful
的 reqparse
模块试图解析 its data from flask.request.json
,只有在设置 Content-Type: application/json
时才会设置。
如果您有权访问 curl
(或 wget
),您可以执行以下操作来测试:
$shell> curl -X POST -H "Content-Type: application/json" -d '{"name": "holly"}' http://localhost:5000/users
{
"first_name": "Holy",
"last_name": "Johnson"
}