首页 > 解决方案 > Flask RestPlus/RestX:如何在命名空间之间共享 API 模型?

问题描述

我的 Flask-RestX 应用程序中有以下结构:

我在api_models/permissions中有一个permission_model,我想在api_models/users的user_model中使用它。用例:

权限模型:(api_models/permissions.py中)

permission_model = permission_api.model('Permission', {
    "id": fields.String(description="Permission ID", required=True)
})

用户模型:(api_models/users.py 中

from .permissions import permission_model

user_model = users_api.model('User', {
    "id": fields.String(description="User ID", required=True),
    "permissions": fields.List(fields.Nested(permission_model))
})

我认为这就像将模型从一个文件导入到另一个文件一样简单,但是这样做时整个 API 都会崩溃(“未提供 API 定义。”)。我认为这是因为它们附加到不同的命名空间?

  1. 有解决方法吗?
  2. 人们如何跨命名空间使用模型?

谢谢。

标签: pythonflaskflask-restplus

解决方案


这实际上按预期工作。在花了很多时间试图理解为什么不共享模型之后,我从头开始,检查每一行代码,当我到达命名空间注册块时......我觉得非常愚蠢:我忘了注册应用程序中的实际“权限”命名空间。做到了,现在工作正常,模型按预期共享。


推荐阅读