繁体   English   中英

Flask-restful API不接受json

[英]Flask-restful API not accepting json

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

您的代码应该可以工作-您必须指定请求标头Content-Type: application/json 原因是因为flask-restfulreqparse模块试图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中,您可以设置标题,如下面的屏幕截图所示。 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM