使用 Ariadne 在 Python GraphQL 解析器中将 snake_case 转换为驼峰命名法

Convert snake_case to camelCase in Python GraphQL resolver using Ariadne

我已经使用 Ariadne 使用 Apollo GraphQL 创建了一个 Python Flask 服务器。我的 GraphQL 架构应该具有驼峰式命名的属性名称。但是,似乎我的 GraphQL 解析器必须在 snake_case 中 return 属性名称,否则响应不会得到解析。

这是我的 GraphQL 架构定义:

type Asset {
    assetId: ID!
    accountId: Int
    version
}

type Query {
    getAssets() : [Asset]
}

我的解析器函数:

@convert_kwargs_to_snake_case
def get_commercial_asset_resolver(obj, info):
    """Resolver function to fetch list of assets"""        
    assets = runquery.run_query_for_assets()
    return assets

使用装饰器@convert_kwargs_to_snake_case,一个属性在 GraphQL 响应中成功映射,即 snake_case 的版本和它的 camelCase 相同。

但是,如果我从我的解析器中删除@convert_kwargs_to_snake_case,我的结果集中的 none 属性将映射到 GraphQL 响应。

是否可以在 Python 中使用 Ariadne 的驼峰式属性?通过查看 Ariadne documentation 似乎不是。寻找建议。

好吧,在阅读这篇 Ariadne discussion 之后,我明白了,我只是在创建 Ariadne 可执行 GraphQL 架构时没有通过 Ariadne snake_case_fallback_resolvers

所以,基本上,我所做的是 -

from ariadne import load_schema_from_path, make_executable_schema, snake_case_fallback_resolvers, graphql_sync, ObjectType

type_defs = load_schema_from_path("./schema.graphql")
schema = make_executable_schema(type_defs, query, snake_case_fallback_resolvers)

我做了什么来解决这个无法将 camelCase 中的属性映射回 GraphQL 响应的问题:

schema = make_executable_schema(type_defs, query)
# Just removed snake_case_fallback_resolvers from the function parameters

此外,我从解析器函数中删除了@snake_case_fallback_resolvers,以获取属性(如果有的话)以驼峰命名法作为输入传递给解析器。