oracle restful post,Python Flask Restful POST不接受JSON参数

我遇到了一个类似的问题,这里有一个对我有效的解决方案。假设您的应用程序如下所示:from flask import Flask, jsonify

from flask_restful import Api, Resource, reqparse

app = Flask(__name__)

api = Api(app)

# Define parser and request args

parser = reqparse.RequestParser()

parser.add_argument('last_name', type=str)

parser.add_argument('first_name', type=str)

# not the type=dict

parser.add_argument('personal_data', type=dict)

class Item(Resource):

def post(self):

args = parser.parse_args()

ln = args['last_name']

fn = args['first_name']

# we can also easily parse nested structures

age = args['personal_data']['age']

nn = args['personal_data']['nicknames']

return jsonify(fn=fn, ln=ln, age=age, nn=nn)

api.add_resource(Item, '/item')

if __name__ == '__main__':

app.run(debug=True)

现在,您可以轻松创建一些JSON数据:import json

d = {'last_name': 'smith', 'first_name': 'john', 'personal_data': {'age': 18, 'height': 180, 'nicknames': ['johnny', 'grandmaster']}}

print(json.dumps(d, indent=4))

{

"last_name": "smith",

"first_name": "john",

"personal_data": {

"age": 18,

"height": 180,

"nicknames": [

"johnny",

"grandmaster"

]

}

}

json.dumps(d)

'{"last_name": "smith", "first_name": "john", "personal_data": {"age": 18, "height": 180, "nicknames": ["johnny", "grandmaster"]}}'

并调用应用程序:curl http://localhost:5000/item -d '{"last_name": "smith", "first_name": "john", "personal_data": {"age": 18, "height": 180, "nicknames": ["johnny", "grandmaster"]}}'

这将因错误而崩溃(我缩短了回溯时间):age = args['personal_data']['age']

TypeError: 'NoneType' object is not subscriptable

原因是没有指定头。如果我们加上-H "Content-Type: application/json"

然后打电话curl http://localhost:5000/item -H "Content-Type: application/json" -d '{"last_name": "smith", "first_name": "john", "personal_data": {"age": 18, "height": 180, "nicknames": ["johnny", "grandmaster"]}}'

输出看起来与预期一致:{

"age": 18,

"fn": "john",

"ln": "smith",

"nn": [

"johnny",

"grandmaster"

]

}

该功能还可以进一步简化为:class Item(Resource):

def post(self):

json_data = request.get_json()

# create your response below

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值