Kun*_*pta 3 ios apollo swift graphql apollo-client
我正在使用 Apollo 客户端进行 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
Run Code Online (Sandbox Code Playgroud)
但是出现的问题是所有标量现在都以字符串形式出现。
例如:- 在登录时,如果我创建了电子邮件和密码的变更,我的架构将响应作为 JSON 返回,而创建的 APIClient 将响应显示为字符串(而不是 JSON)。
因此,收到了一个错误,上面写着
Apollo.GraphQLResultError(path: ["login", "response"], underlying: Apollo.JSONDecodingError.couldNotConvert
Run Code Online (Sandbox Code Playgroud)
这是因为接收的是 String 而不是 JSON,并且字符串无法转换为所需的 JSON。
有没有人面临同样的问题?
所以我已经想通了。解决方法是添加
--passthrough-custom-scalars
Run Code Online (Sandbox Code Playgroud)
在运行脚本中。这将传递像 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
Run Code Online (Sandbox Code Playgroud)
现在,当代码与此运行脚本一起重新编译时,JSON 标量将变为有效。
这花了我很多时间才弄明白。希望它可以帮助某人并节省他们的时间。谢谢
| 归档时间: |
|
| 查看次数: |
1218 次 |
| 最近记录: |