[英]Convert snake_case to camelCase in Python GraphQL resolver using Ariadne
我使用 Ariadne 创建了一个带有 Apollo GraphQL 的 Python Flask 服务器。 我的 GraphQL 架构应该在 camelCase 中具有属性名称。 但是,看起来,我的 GraphQL 解析器必须以 snake_case 返回属性名称,否则无法解析响应。
这是我的 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,我的结果集中的所有属性都不会映射到 GraphQL 响应。
是否可以在 Python 中使用 Ariadne 使用 camelCase 属性? 通过查看Ariadne 文档,似乎并非如此。 寻找建议。
好吧,在阅读了这个Ariadne 讨论之后,我发现,在创建 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,以获取属性(如果有任何属性作为输入传递给camelCase 中的解析器)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.