输入中不支持 Apollo graphQL 的令牌

Posted

技术标签:

【中文标题】输入中不支持 Apollo graphQL 的令牌【英文标题】:Apollo graphQL unsupported token in input 【发布时间】:2020-03-07 00:39:58 【问题描述】:

我正在使用 Apollo android GraphQL(Gradle 插件版本 1.2.1)将数据发布到服务器。我已经从服务器下载了 schema.json 文件并编写了一个带有突变的 .graphql 文件。为了从 App 传递对象,我定义了一些输入对象,如下所示。

input Location 
    lat: Float!
    lon: Float!


input SensorParams 
    sources: [Int]
    exposition: Float
    location: Location!


mutation InsertSessionResults(
    $location: Location!) 
    insertSession(session: 
        name: $name
    ) 
        id
    

但是,当我构建应用程序时,我收到以下错误:无法解析 GraphQL 文件。不支持的令牌“!”

如果我删除“!”从位置,该过程对“[”字符给出相同的错误。

阅读文档我了解到输入定义中允许这两个字符分别请求非空值和设置列表类型,那么可能导致错误的原因是什么?

【问题讨论】:

【参考方案1】:

无需在前端编写类型定义,只需将查询编写为字符串即可。输入类型在服务器的架构中定义。

【讨论】:

【参考方案2】:

正如@Xizam 上面已经回答的那样,您不需要在android 前端编写的那个文件。事实上删除它。只要您有架构和 YourQueries.graphql 文件(包含您决定在应用程序中进行的查询和突变),构建项目,它就会运行良好。

Android Studio 会在 Activity 类中声明它们时识别您的突变。

按照这个简单的教程:here

【讨论】:

以上是关于输入中不支持 Apollo graphQL 的令牌的主要内容,如果未能解决你的问题,请参考以下文章

Apollo GraphQL - 订阅响应中不包含相关类型

Apollo GraphQL 的动态标头(中间件之外)

在 Angular Apollo Graphql 中访问突变结果

如何使用 apollo graphql 处理授权标头?

从缓存graphql apollo 2.0读取数据

如果令牌过期,如何在 apollo 客户端中重定向或导航