gpt4 book ai didi

python - Flask-restful API 不接受 json

转载 作者:行者123 更新时间:2023-12-01 03:38:21 25 4
gpt4 key购买 nike

我正在尝试学习如何使用 api。我完全复制了书中的所有内容,但无法发布到 api。我尝试将 {'name':'holy'} 作为 postman(一个 json 发布工具)中的原始数据发布到 api,并且收到 vladation 帮助消息错误“No Name”提供”:但是当我尝试 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-restfulreqparse 模块尝试解析 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"
}

在 Postman 中,您可以设置标题,如下面的屏幕截图所示。 enter image description here

关于python - Flask-restful API 不接受 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40055384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com