python graphql 将 uuid 转换为 slug

python graphql translate uuid to slug

我正在为一个应用程序使用 python、石墨烯和 sqlalchemy。我所有的模型都有一个 id 字段和一个 uuid 字段,生成方式如下

id = db.Column(
    db.Integer,
    primary_key=True,
    unique=True,
    nullable=False)

uuid = db.Column(
    UUID,
    unique=True,
    nullable=false,
    default=uuid.uuid4)

为了安全起见,将使用 uuid 字段代替 ID,但 uuid 的问题是它们太长,因此为了缩短它们,我使用 this method.

现在,我不完全确定从 uuid 到 slug 的转换会在哪里发生。我是否必须在每个 return 子弹的模型上定义一个 @property?或者这会发生在 graphql 解析器函数中吗?如果是,那将如何实现?

感谢大家的帮助,谢谢!

这完全取决于您,没有任何特别的优缺点。我想如果您打算在您的应用程序的其他地方使用 slug 属性 ,那么将它放在您的模型上是有意义的。如果它只是要在您的 GraphQL 中使用 api 然后将其保留在解析器中。

要在石墨烯中实现它,您可以这样做:

class User(graphene.ObjectType):
    id = graphene.ID(required=True)

    def resolve_id(user, info):
        return uuid_to_slug(user.uuid)