使用 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,以获取属性(如果有的话)以驼峰命名法作为输入传递给解析器。
我已经使用 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,以获取属性(如果有的话)以驼峰命名法作为输入传递给解析器。