尝试运行此 api 时出现 Flask-Restful 错误

问题描述 投票:0回答:1

我正在学习在 Flask 中创建 API,并且正在关注这个链接

我点击了运行按钮,代码开始工作了,但是给出了关于 marshmellow-sqlalchemy 的警告

然后我打开邮递员并输入网址“http://127.0.0.1:5000/api/users”

这就是问题,它说

"message": "Did not attempt to load JSON data because the request Content-Type was not 'application/json'."

stackoverflow 上已经有类似的帖子,但我无法找出两者之间的适当相似性,所以请帮忙!!

我从上面提到的链接复制了整个代码,但这里是相同的副本:-

from flask import Flask, request, jsonify 
from flask_sqlalchemy import SQLAlchemy 
from flask_marshmallow import Marshmallow 
from flask_restful import Resource, Api


app = Flask(__name__) 
api = Api(app) 
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db' 
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 
db = SQLAlchemy(app) 
ma = Marshmallow(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(32), unique=True)
    password = db.Column(db.String(32))
    first_name = db.Column(db.String(32))
    last_name = db.Column(db.String(32))
    age = db.Column(db.Integer)

    def __init__(self, username, password, first_name, last_name, age):
        self.username = username
        self.password = password
        self.first_name = first_name
        self.last_name = last_name
        self.age = age

class UserSchema(ma.Schema):
    class Meta:
        fields = ('id', 'username', 'password', 'first_name', 'last_name', 'age')

db.create_all()

user_schema = UserSchema() 
users_schema = UserSchema(many=True)

class UserManager(Resource): 
    
    @staticmethod
    def get():
        try: id = request.args['id']
        except Exception as _: id = None

        if not id:
            users = User.query.all()
            return jsonify(users_schema.dump(users))
        user = User.query.get(id)
        return jsonify(user_schema.dump(user))

    @staticmethod
    def post():
        username = request.json['username']
        password = request.json['password']
        first_name = request.json['first_name']
        last_name = request.json['last_name']
        age = request.json['age']

        user = User(username, password, first_name, last_name, age)
        db.session.add(user)
        db.session.commit()

        return jsonify({
            'Message': f'User {first_name} {last_name} inserted.'
        })

    @staticmethod
    def put():
        try: id = request.args['id']
        except Exception as _: id = None

        if not id:
            return jsonify({ 'Message': 'Must provide the user ID' })

        user = User.query.get(id)
        username = request.json['username']
        password = request.json['password']
        first_name = request.json['first_name']
        last_name = request.json['last_name']
        age = request.json['age']

        user.username = username
        user.password = password
        user.first_name = first_name
        user.last_name = last_name
        user.age = age

        db.session.commit()
        return jsonify({
            'Message': f'User {first_name} {last_name} altered.'
        })

    @staticmethod
    def delete():
        try: id = request.args['id']
        except Exception as _: id = None

        if not id:
            return jsonify({ 'Message': 'Must provide the user ID' })

        user = User.query.get(id)
        db.session.delete(user)
        db.session.commit()

        return jsonify({
            'Message': f'User {str(id)} deleted.'
        })


api.add_resource(UserManager, '/api/users')

if __name__ == '__main__':
    app.run(debug=True)
python rest flask flask-sqlalchemy flask-restful
1个回答
0
投票

我在邮递员的标题中添加了一个字段作为

Content-Type:application/json
它奏效了

© www.soinside.com 2019 - 2024. All rights reserved.