#python #json #flask #flask-restful #marshmallow
#python #json #flask #flask-restful #marshmallow
Вопрос:
При создании REST API с помощью flask-restful я получаю нежелательный массив json в своем ответе
{
"data": [
{
"email": "sam@test.com",
"id": null,
"name": "Sam"
},
{}
]
}
Чего я хотел, так это
{
"data": {
"email": "sam@test.com",
"id": null,
"name": "Sam"
}
}
Вот мой код
class User(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(100), nullable=False)
email = db.Column(db.String(100), nullable=False, unique=True)
password = db.Column(db.String(100), nullable=False)
class UserSchema(ma.ModelSchema):
class Meta:
model = User
fields = ('id', 'name', 'email')
ordered = True
class AuthResource(Resource):
def post(self):
parser = reqparse.RequestParser()
parser.add_argument('name', type=str, required=True, help='name required')
parser.add_argument('email', type=str, required=True, help='email required')
parser.add_argument('password', type=str, required=True, help='password required')
args = parser.parse_args()
try:
user = User(**args)
db.session.add(user)
db.session.commit()
return {'data': UserSchema().dump(user)}, 201
except IntegrityError:
return {'message': 'Account already exists'}, 400
Комментарии:
1.
.dump(user, many=False)
?2. @KlausD Нет.. Это не работает.. Все еще возвращает то же самое
Ответ №1:
Это сделало свое дело
return {'data': UserSchema().dump(user).data}, 201
Комментарии:
1. Да. Это меняется в marshmallow 3, где возвращаются только данные. marshmallow 3 все еще находится в состоянии RC, но если вы начинаете новый проект, я бы рекомендовал использовать его.