首页
学习
活动
专区
工具
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中,每个字段都必须有一个输出类型,用于指定该字段返回的数据类型。如果在查询中使用了未定义的输出类型,就会出现这个错误。解决方法是检查查询语句中的字段和类型定义,确保使用的类型都是已定义的。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

你还在用 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.2K40

实践微服务,第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.5K40

GraphQL 基础实践

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

12.8K20

GraphQL 快速搭建服务端 API

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

2.4K30

GraphQL】225-GraphQL真香入门教程

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

8.1K21

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与OpenAPI和JSONSchema等其他系统区别在于,GraphQL包含了定义公共数据模型和消息模式方法,这是同一个问题。一个有效系统必须允许一种简单方法来定义两者。...GraphQL是一种有效负载描述语言,它解决了在单一领域特定语言中使用验证规则和消息模式定义有效负载问题。该语言包括一个基于graphql类型系统,就像任何接口定义语言一样。...因为生成代码本身只涉及到消息验证,所以它被Nav中许多库和应用程序用作依赖项(无论是生产者、消费者还是一个简单文档工具) 虽然我们项目以monorepo形式存在,情况不一定如此。...可以根据职责将项目划分为多个repos,一个或多个repos可以包含GraphQL及其类型扩展,这些类型扩展最终合并为一个模式,作为解析器输入。

18310

GraphQL真香入门教程

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

7.1K30

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

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

1.7K40

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

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

8.3K40

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

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

99930

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移动设备提供了一种更有效数据载体。

2.9K11

扩展一个 GraphQL 网站 | Linux 中国

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

43720

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

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

64420

技术专题:API资产识别大揭秘(一)

传统 API 拿到是前后端约定好数据格式,GraphQL 对 API 中数据提供了一套易于理解完整描述,客户端能够准确地获得它需要数据,没有任何冗余,也让 API 更容易地随着时间推移而演进...除此之外,GraphQL 操作类型可以是 query、mutation 或 subscription,它们分别代表了查询、变更和订阅,在使用GraphQL API发送请求中也必定包括这些操作类型特征字段...在SOAP API消息中存在了四个不同元素:Envelope: 是将文档标识 SOAP 消息而不是任何其他类型 XML 文档基本元素。消息以信封标签开始和结束。...(必须元素)Fault: 如果在处理过程中出现问题,则用于错误消息和状态信息。(可选元素)并且在请求正文中必须包含Envelope、Body元素以及相关内容。...未来,Portal Lab将继续以开放创新态度积极投入各类安全技术研究,持续安全社区及企业级客户提供高质量技术输出

59020
领券