我在用Python Flask-Restful提出邮寄请求。我用邮递员(Chrome)测试我的 api。我将 ContentType 设置为应用程序/json在邮递员的标题部分。而且我只能以原始值的形式获取参数,当我更改为表单数据时,我收到错误消息“浏览器(或代理)发送了该服务器无法理解的请求。”:
(parameters using raw)
(parameters using form-data)
这是我的代码:
# -*- coding: UTF-8 -*-
from app import app, db, models, api, DataModels
from flask.ext import restful
from flask.ext.restful import reqparse
from flask import jsonify, request
class SchoolListHandler(restful.Resource):
def post(self):
json_data = request.get_json(force=True)
name = json_data['name']
slogan = json_data['slogan']
print "name is: %s, slogan is: %s" % (name, slogan)
return jsonify(result="xxxx")
api.add_resource(SchoolListHandler, "/api/allSchools")
另外,我尝试使用reqparse来获取我的参数,但问题仍然没有解决:
# -*- coding: UTF-8 -*-
from app import app, db, models, api, DataModels
from flask.ext import restful
from flask.ext.restful import reqparse
from flask import jsonify, request
class SchoolListHandler(restful.Resource):
def get(self):
all_schools = DataModels.School.School.query.all()
return jsonify(data=[x.json for x in all_schools])
def post(self):
parser = reqparse.RequestParser()
parser.add_argument("name", type=unicode, required=True, location="json")
parser.add_argument("slogan", type=unicode, required=True, location="json")
args = parser.parse_args()
name = args['name']
slogan = args['slogan']
return jsonify(result="xxxx")
api.add_resource(SchoolListHandler, "/api/allSchools")
那么,我该如何解决这个问题,先谢谢了!
只需将您的 location="json" 更改为 location="form" 即可:
parser.add_argument(...位置=“json”)。我解决了这个问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)