首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

GraphQL :必须为输出类型,但获得:未定义的错误

GraphQL是一种用于API的查询语言和运行时环境。它允许客户端精确地指定需要的数据,并且可以减少网络请求的数量。GraphQL具有以下特点:

概念:

  • GraphQL是一种用于API的查询语言,它提供了一种灵活且高效的方式来获取和修改数据。
  • 它使用类型系统来定义数据模型,并允许客户端根据其需求来查询和修改数据。
  • GraphQL是一种声明式的查询语言,客户端可以精确地指定需要的数据,避免了过度获取或不足的问题。

分类:

  • GraphQL属于API查询语言的范畴,与传统的RESTful API相比,它具有更高的灵活性和可扩展性。

优势:

  • 灵活性:GraphQL允许客户端精确地指定需要的数据,避免了过度获取或不足的问题。客户端可以根据自己的需求来查询和修改数据。
  • 性能优化:GraphQL可以减少网络请求的数量,因为客户端可以一次性获取多个数据字段,而不需要多次请求。
  • 类型安全:GraphQL使用类型系统来定义数据模型,可以在编译时检查查询的正确性,减少了运行时错误。
  • 可扩展性:GraphQL支持按需扩展,可以根据业务需求添加新的字段和类型,而不会影响现有的查询和客户端。

应用场景:

  • 移动应用程序:GraphQL适用于移动应用程序,因为它可以减少网络请求的数量,提高性能,并且可以根据移动应用程序的需求来精确获取数据。
  • 复杂数据查询:当需要查询复杂数据结构时,GraphQL可以提供更好的灵活性和可读性,使得数据查询更加简单和高效。
  • 微服务架构:GraphQL适用于微服务架构,因为它可以将多个服务的数据整合到一个查询中,减少了服务之间的耦合度。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云API网关:https://cloud.tencent.com/product/apigateway
  • 腾讯云Serverless Cloud Function:https://cloud.tencent.com/product/scf
  • 腾讯云容器服务:https://cloud.tencent.com/product/ccs
  • 腾讯云数据库:https://cloud.tencent.com/product/cdb
  • 腾讯云CDN加速:https://cloud.tencent.com/product/cdn

关于"必须为输出类型,但获得:未定义的错误",这是GraphQL的一种错误提示,意味着在查询中使用了未定义的输出类型。在GraphQL中,每个字段都必须有一个输出类型,用于指定该字段返回的数据类型。如果在查询中使用了未定义的输出类型,就会出现这个错误。解决方法是检查查询语句中的字段和类型定义,确保使用的类型都是已定义的。

相关搜索:GraphQL错误:应为GraphQL命名类型,但得到的是:{}错误需要类型为‘() => void)?’的值,但获得类型为'+Future<dynamic>‘的值嵌套错误:无法确定getProducts的GraphQL输出类型在Apollo Express GraphQL中获取错误:错误:架构必须包含唯一命名的类型,但包含多个名为"DateTime“的类型Realm DB React本机架构-类型必须为'string‘类型,got (未定义)错误应为“Widget”类型的值,但获得的值类型为“Null”,flutterNestjs定义GraphQL对象类型得到此错误:架构必须包含唯一命名的类型,但包含多个名为"Address“的类型需要设备类型为cuda的对象,但获得的是设备类型cpu错误:应为“String”类型的值,但获得的是“Null”类型的值MongoDB:$size的参数必须是数组,但其类型为: missing应为“List<DropdownMenuItem<Project$>>?”类型的值,但获得类型为“List<dynamic>”的值(TiledWorldMap)错误:应为“double?”类型的值,但获得的是“String”类型的值颤动错误:应为'String‘类型的值,但获得的是'int’类型的值颤动错误:应为“File”类型的值,但获得的是“FilePickerResult”类型的值错误:列"urls“的类型为url[],但表达式的类型为record[]错误:列的类型为timestamp,但表达式的类型为double precision[GraphQL错误]:消息:所需类型为"MongoID!“的变量"$id”未提供错误需要‘int’类型的参数,但参数3的类型为‘int*’应为“List<DropdownMenuItem<Color>”类型的值,但获得的类型为“MappedListIterable<Color,DropdownMenuItem<Color>>”尝试为疾病创建分类器,但返回错误的输出
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

你还在用 REST API 吗?

REST 的核心思想是,通过向资源的 URL 发送请求并获得响应(通常是 JSON,但这取决于 API)来检索资源。...抓取不足——这是指 API 端点并没有提供所需的全部信息。因此,客户端必须发出多个请求才能获取应用程序所需的全部内容。 什么是 GraphQL?...在我们的例子中,我们必须显示该帖子的作者、帖子以及该用户的关注者。 如果使用 REST,我们至少要发出 2 到 3 个请求,类似于: /user/以获得用户(作者)的详细信息,比如名称。...例如,在第一个请求中,我们只需要名称,但是当我们使用这种方法时,我们将会获取该用户相关的所有详细信息。 此时就是 GraphQL 显示其强大功能的时候了。我们需要指定查询,然后才能获得所需的输出。...错误处理 REST 中的错误处理比 GraphQL 简单得多,GraphQL 通常会给我们一个 200 OK 的状态码,即使已经出现错误了。

1.5K10

GraphQL是API的未来,但它并非银弹

但那时,GraphQL 可能也就不必要了。 3 降低有效载荷 在这一段中,作者指出,RESTful API 不允许部分响应。这是错误的。这里有一个例子: GET /users?...你可以向模式添加自定义指令,以获得类似于 OAS 的结果,但你必须得自己维护这样的自定义实现。 你可能会认为,OAS 不能保证 API 的响应符合规范。你说的对。...GraphQL 服务器可以自由地使用它期望的任何类型进行响应。如果你发送一个查询,则服务器的响应可以不符合自省响应中的 GraphQL 模式。以 Apollo Federation 为例。...你将模式上传到模式注册中心,然后因为错误部署了 GraphQL 服务器的错误版本。如果你更改字段的类型,客户端可能就无所适从了。...因此,尽管社区一直在说,“GraphQL 是自记录的”,但这个特性本身并不能成为一个有用的 API。OAS 提供了一个添加用例的工具,但是你仍然必须自己编写它们。

2K10
  • 大厂都在实践的GraphQL,你了解吗?

    前言 最近,GraphQL 在构建后端 API 方面获得越来越多大公司的青睐, 如 PayPal、Facebook、Hasura、去哪儿等公司都做了大量实践。...它为客户端提供了一种灵活的方式来请求它需要的数据,提供严格类型的接口来查询数据,以及比 REST 更好的错误处理。...与 REST API 相比,GraphQL 有其自身的优势,例如 只请求所需的内容,而不是所有内容。 防止为获取所需数据而进行的级联调用。 客户端不需要选择 REST 路径来获取不同的资源数据。...定义一个 GraphQL 模型 接下来为一个简单查询 API 定义一个 GraphQL 模型。 type Person { id: Int! name: String!...这只是为了简单起见, 也可以将人员的创建与地址相结合。为了修改数据,这里必须使用类型定义address字段 为AddressInput类型,这是因为 mutation 仅适用于输入类型。

    2.6K40

    GraphQL 基础实践

    GraphQL 中还设计了一套类型系统,在这个类型系统的约束下,可以获得与 TypeScript 相近的相对安全的开发体验。...ID类型代表着一个独一无二的标识,ID 类型最终会被转化成String类型,但它必须是独一无二的,例如 mongodb 中的 _id 字段就可以设置为ID类型。...在本例中,Schema 定义了 name 为 String类型,那么你就不能传 Int类型进去,此时会抛出类型不符的错误。...接口指的是 GraphQL 实体类型本身提供字段的集合,定义一组与外部沟通的方式。使用了 implements的类型必须包含接口中定义的字段。...当请求体查询movie时,同名的 Resolver 必须返回Movie类型的数据。当然你还可以单独为name字段使用独立的 Resolver 进行解析。

    12.8K20

    GraphQL-to-REST API Connectors是Apollo的“最伟大的成就”

    是的,您以前可以将 REST API 与 GraphQL 集成,但这涉及手动实现代码——我们可以说这是一个繁琐的过程。...也就是说,GraphQL 提供了一种强类型的架构定义语言来描述跨任意数量系统的数据,这种方式对客户端来说既直观又实用。相比之下,REST 鼓励采用更加面向资源的方法来组织和部署服务,通常沿着域边界。...必须使用所选编程语言编写与 REST API 的绑定。 必须编写利用这些绑定的解析器。 必须部署子图服务。 必须组合和发布用于更新路由器的模式。...以加密货币交易平台提供商 Coinbase 为例,Connectors 未来可能会被使用,但 Coinbase 的后端服务需要的是 gRPC 而不是 REST API Connectors。...“如果部署的Connectors 出现问题,回滚需要很长时间——20 分钟的高容量错误是不可接受的,”Saunders 说。

    10110

    实践微服务,第14部分:GraphQL

    下面是我们的“Account”类型的一个稍微简化的类型声明,它差不多反映了我们当前使用的输出结构: // accountType, includes Resolver functions for inner...但真正的复杂性在fields参数中。...GraphQL查询 到目前为止,我们只是奠定了基础。毕竟,GraphQL的目的是为系列博客第2篇中提到的动态查询提供便利。 GraphQL 查询的基本形式只需要查询模式中声明的对象的指定字段。...该graphql.Params包含模式,变量和我们要执行的实际查询。 该查询通过将param对象传入graphql.Do(...) func来执行。 将响应转换为JSON 断言没有错误和预期的输出。...7.3反思模式 GraphQL的一个非常有用的特性是它能够使用自省向客户描述自己。 通过对__schema和__type进行查询,我们可以获得关于我们声明的模式的信息。

    2.6K40

    【GraphQL】225-GraphQL真香入门教程

    GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。...便于维护,根据需求平滑演进,添加或隐藏字段; GraphQL 使用类型来保证应用只请求可能的数据,还提供了清晰的辅助性错误信息。应用可以使用类型,而避免编写手动解析代码。 2....ID: ID 标量类型表示一个唯一标识符,通常用以重新获取对象或者作为缓存中的键。 ID 类型使用和 String 一样的方式序列化;然而将其定义为 ID 意味着并不需要人类可读型。...下面案例:参数 teamName 是 String 类型,必须传递,而 number 参数也是 Int 类型,但是是非必须传递,最后输出的结果也是 String 类型。...属性上 属性定义 定义在类型后,键值对形式 定义在参数对象 fields 属性中,值为对象,每个属性名为键名,值也是对象,其中 type属性的值为 graphql 中的属性,下面会补充 补充: fields

    8.1K21

    用 GraphQL 快速搭建服务端 API

    虽然在 RESTful API 里,我们可以通过路径命名笼统知道这个请求的作用,但使用 GraphQL 就可以在通过查询语句清晰、具体地描述这个请求的输入和输出。...稍微要注意的是,指定字段类型时,必须用这些数据类型定义的实例,比如 grephene.Int() 。...但这么实现完了似乎心有不甘,好像还是有一些字段在数据库表里定义了,在 GraphQL 的对象类型 code 2.1 里被重复定义了?...对象类型定义不完全相同的字段,如 Crew 的 specie 在数据库中用整型表示,但这里仍将其定义为枚举型 Sepcies 。...当然这么做也有不好的地方,比如会改动用户的使用体验、需要额外的 UI/UX 在应对各种错误,但基本是一个比较平衡工作量和效果的方案。

    2.5K30

    Spring认证_什么是Spring GraphQL?

    Querydsl 提供了一种灵活但类型安全的方法,通过使用注释处理器生成元模型来表达查询谓词。...Spring Data 为 MongoDB 支持此变体。 Spring GraphQL 存储库中的webmvc-http示例使用 Querydsl 来获取artifactRepositories....自动注册 QuerydslDataFetcher公开 aGraphQLTypeVisitor查找返回类型与一个或多个 Querydsl 存储库的域类型匹配的顶级查询,并DataFetcher为每个匹配的查询注册...这包括返回单个值的查询和返回值列表的查询。 存储库必须用@GraphQlRepository. 默认情况下,查询返回的 GraphQL 类型的名称必须与存储库域类型的简单名称匹配。...测试 您可以使用 Spring 的 测试 GraphQL 请求WebTestClient,只需发送和接收 JSON,但许多 GraphQL 特定细节使这种方法比应有的更麻烦。

    1.7K40

    GraphQL真香入门教程

    GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。...便于维护,根据需求平滑演进,添加或隐藏字段; GraphQL 使用类型来保证应用只请求可能的数据,还提供了清晰的辅助性错误信息。应用可以使用类型,而避免编写手动解析代码。 2....ID: ID 标量类型表示一个唯一标识符,通常用以重新获取对象或者作为缓存中的键。 ID 类型使用和 String 一样的方式序列化;然而将其定义为 ID 意味着并不需要人类可读型。...下面案例:参数 teamName 是 String 类型,必须传递,而 number 参数也是 Int 类型,但是是非必须传递,最后输出的结果也是 String 类型。...字符后面,这里是 typeHero 在参数对象的 name 属性上 属性定义 定义在类型后,键值对形式 定义在参数对象 fields 属性中,值为对象,每个属性名为键名,值也是对象,其中 type属性的值为

    7.3K30

    GraphQL语法用于模式验证和代码生成的新方法

    GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。...GraphQL与OpenAPI和JSONSchema等其他系统的区别在于,GraphQL包含了定义公共数据模型和消息模式的方法,这是同一个问题。一个有效的系统必须允许一种简单的方法来定义两者。...GraphQL是一种有效负载描述语言,它解决了在单一领域特定语言中使用验证规则和消息模式定义有效负载的问题。该语言包括一个基于graphql的类型系统,就像任何接口定义语言一样。...因为生成的代码本身只涉及到消息验证,所以它被Nav中的许多库和应用程序用作依赖项(无论是生产者、消费者还是一个简单的文档工具) 虽然我们的项目以monorepo形式存在,但情况不一定如此。...可以根据职责将项目划分为多个repos,一个或多个repos可以包含GraphQL及其类型扩展,这些类型扩展最终合并为一个模式,作为解析器输入。

    20810

    使用ASP.NET Core开发GraphQL服务器 -- 预备知识(上)

    GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。...从这个例子可以看出,查询是可以嵌套的,所以使用GraphQL的客户端可以通过一次请求获得所有需要的数据。 每当对GraphQL服务器进行查询的时候,这些查询首先都会依据一个类型系统对其进行验证。...(所有的错误请求的返回结果都是这个格式的)。 错误信息里告诉我们要查询repository这个字段,必须要提供owner这个参数,那么我们就加上这个参数: ? 这次终于返回了正确的结果。...输入类型可以是:Int,Float,String,Boolean,Null,Enum,List,Object。 例如: ? 后边的叹号,表示该参数是必须的。 冒号后边的部分就是返回类型 ?...例子,查询Repository这个类型的相关信息,查询__type字段,带着参数name为Repository: ? 这个查询结果也和文档里的一致,我就不贴图了。

    1.8K40

    GraphQL 和 REST 优缺点对比,附上代码示例

    它的目的是纠正REST的一些缺点,但没有一项技术是完美的。 与 REST 相比,GraphQL 有哪些优点?为什么要在项目中使用其中一种?...如果使用GraphQL,请决定如何处理错误 REST Api 能够更好地利用 HTTP 的错误报告特性。...如果您不想为客户端错误返回 200 OK 状态(这在 GraphQL 中很常见),则需要更多地考虑错误处理。...缓存问题 缓存是 REST 内置的功能,但你必须使用 GraphQL 来管理缓存。如果你没有在适当的地方构建缓存,那么你从 GraphQL 更有针对性的获取中获得的所有提高的效率都可能被抹去。...总结 和所有事情一样,在决定 REST 和 GraphQL 之间的取舍时需要考虑一些折衷。你为项目选择什么将取决于你的需求和资源。

    1K30

    GraphQL 初体验,Node.js 构建 GraphQL API 指南

    虽然每一个 API 调用都可以异步完成,但你也必须处理它们的响应,无论是错误、超时甚至暂停页面渲染,直到收到所有请求数据。...Addresses 还定义了他自己的几个字段。(顺便说一下,GraphQL 模式不仅有对象,字段和标量类型,还有更多,你也可以合并接口,联合和参数以构建更复杂的模型,但本文中不会介绍)。...在左侧窗格中,你可以输入所需要的任何有效 GraphQL 查询,而在右侧获得结果。...只需要 Schema 表达几行清晰的代码,就可以在客户端和服务端之间建立强类型的契约,这样可以防止你的服务接受虚假数据,并向请求着清晰地表明错误。...例如,无论成功与否,GraphQL 仅制定一个状态码 200.在这个响应中会返回一个特殊的错误键,供客户端解析和识别出错,因此,错误处理可能会有些棘手。

    8.3K40

    GraphQL 从入门到实践

    传统的 API 拿到的是前后端约定好的数据格式,GraphQL 对 API 中的数据提供了一套易于理解的完整描述,客户端能够准确地获得它需要的数据,没有任何冗余,也让 API 更容易地随着时间推移而演进...它定义了字段的类型、数据的结构,描述了接口数据请求的规则,当我们进行一些错误的查询的时候 GraphQL 引擎会负责告诉我们哪里有问题,和详细的错误信息,对开发调试十分友好。...} } Hello world 总是如此愉快,下面我们来进行稍微复杂一点的查询 查询入口 users 查找所有用户列表,返回一个不可空但长度可以为 0 的数组,数组中如果有元素,则必须为 User 类型...GraphQL 的利好主要是在于前端的开发效率,但落地却需要服务端的全力配合。...---- 网上的帖子大多深浅不一,甚至有些前后矛盾,在下的文章都是学习过程中的总结,如果发现错误,欢迎留言指出~ 参考: GraphQL | 一种为你的 API 而生的查询语言 JSON-RPC

    2.5K31

    API架构风格对比:SOAP vs REST vs GraphQL vs RPC

    一个SOAP消息包含: 每个消息的开始和结束都要包含一个信封标签 包含请求或响应的消息体 标头(如果消息必须确定某些具体要求或额外要求) 请求过程中的错误信息 ?...RESTful架构应该遵循以下六个架构约束: 统一接口:为一个给定的服务(无论是设备还是应用类型)提供统一的接口。...除RESTful CRUD操作外,GraphQL还有订阅功能,允许接收服务端的实时通知。 GraphQL 的优点 类型化的模式:GraphQL 会提前发布它可以做的事情,这种方式提升了可发现性。...详细的错误消息:与SOAP类似,GraphQL提供了详细的错误信息,错误信息包括所有的解析器以及特定的查询错误。 灵活的权限:GraphQL允许在暴露特定的功能的同时保留隐私信息。...GraphQL的使用场景 手机端API:这种情况下,对网络性能和单个消息载体的优化非常重要。因此GraphQL为移动设备提供了一种更有效的数据载体。

    3K11

    扩展一个 GraphQL 网站 | Linux 中国

    如果你正在扩展一个 GraphQL 站点,你会发现这篇文章很有用,但其中大部分内容讲的都是当一个站点获得了足够的流量而出现的必须解决的技术问题。...我去年为它做了一些 SRE 工作。实际上早在 2 月份,我就在 GraphQL 悉尼会议上做过一次演讲,不过这篇博客推迟了一点才发表。...Vocal 是一个基于 GraphQL 的网站,它获得了人们的关注,然后就遇到了可扩展性问题,而我是来解决这个问题的。这篇文章会讲述我的工作。...显然,如果你正在扩展一个 GraphQL 站点,你会发现这篇文章很有用,但其中大部分内容讲的都是当一个站点获得了足够的流量而出现的必须解决的技术问题。...自发布以来的 9 个月里,只有两个平台问题需要员工干预:3 月份每五年一次的 AWS RDS 证书轮换,以及一款应用推出时遇到的 Terraform 错误。

    44920

    一个技术人原地爆炸,并反撸不懂GraphQL的马斯克

    但与此同时,马斯克旁敲侧击地对 Twitter 的开发团队 “批判” 了一番。他表示自己为 Twitter 在许多国家的极慢运行速度感到抱歉。...这里简单的给大家普及一下GraphQL,GraphQL 是一个用于 API 的查询语言,也是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。...GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。...正如官网所说,GraphQL是一款专门为前端查询而生的语言,它本身就是用来解放前后端接口联调工作的提效工具,那当然也包括推特的APP,也可以利用它来提高开发效率,也就是说Twitter的技术主管已经在自己的项目中落地了...在国内GraphQL还没有完全的用起来,当然Apache Skywalking为了提高链路数据输出的效率,直接采用GraphQL,并输出了GraphQL标准的API,这样可以大大的减少前端UI和平台的联调成本

    69820
    领券