我正在使用带有 flask-restplus 和 sqlalchemy 的烧瓶。
我的 rest API 函数如下所示:
@ns.route('/user')
class UsersCollection(Resource):
@jwt_optional
@permissions.user_has('admin_view')
@ns.marshal_list_with(user_details)
def get(self):
"""
Returns list of users.
"""
users = User.query.all()
return users
我愿意将额外的数据添加到users
API 应该返回的集合中。其中一些数据可能存储在其他数据库表中,而其他数据则存储在内存中。
我通常做的是这样的:
@ns.route('/user')
class UsersCollection(Resource):
@jwt_optional
@permissions.user_has('admin_view')
@ns.marshal_list_with(user_details)
def get(self):
"""
Returns list of users.
"""
users = User.query.all()
# Add additional data
for user in users:
user.activity = UserActivity.query ... # from DB
user.online_status = "Active" # Taken somewhere from memory
return users
显然,我不喜欢这种将数据动态添加到 User 对象的方法。但是实现它的最佳设计模式是什么?