我使用 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 檔案,似乎并非如此。尋找建議。
uj5u.com熱心網友回復:
好吧,在閱讀了這個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 中的決議器)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/483707.html
標籤:Python 烧瓶 图形 阿波罗 ariadne-graphql
上一篇:AttributeError:'list'物件沒有屬性'_sa_instance_state'Traceback(最近一次呼叫最后)
