所有GraphQL标量上来的字符串(阿波罗)
问题描述:
我使用阿波罗客户端GraphQL客户端集成。我添加了以下运行脚本,这是在官方文档中建议的。所有GraphQL标量上来的字符串(阿波罗)
cd "${SRCROOT}/${TARGET_NAME}/GraphQL/Open"
$APOLLO_FRAMEWORK_PATH/check-and-run-apollo-codegen.sh generate $(find
. -name '*.graphql') --schema schema.json
--output APIClient.swift
但是即将到来的问题是所有的标量现在都以String的形式出现了。
例如: - 在登录时,如果我创建电子邮件和密码的突变,我的架构返回响应,JSON而APIClient创建显示响应为字符串(而不是JSON)。
由此有收到错误它说
Apollo.GraphQLResultError(path: ["login", "response"], underlying: Apollo.JSONDecodingError.couldNotConvert
这是因为串被接收,而不是JSON和字符串不能被转换成所需的JSON。
是任何人都面临着同样的问题?
答
所以我想通了。解决办法是在运行脚本中添加
--passthrough-custom-scalars
。这将传递像JSON这样的自定义标量。因此,完整脚本变为
cd "${SRCROOT}/${TARGET_NAME}/GraphQL/Open"
$APOLLO_FRAMEWORK_PATH/check-and-run-apollo-codegen.sh generate $(find
. -name '*.graphql') --schema schema.json --passthrough-custom-scalars
--output APIOpen.swift
现在,当代码与此运行脚本一起重新编译时,JSON标量将变为有效。
这花了我很多时间来弄清楚。希望它能帮助别人,节省时间。谢谢