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

如何从导致突变失败的graphql响应中删除`__typename`字段

GraphQL是一种用于API的查询语言和运行时环境,它可以通过单个请求来获取多个数据源的数据。在GraphQL的响应中,__typename字段是一个特殊字段,用于标识返回数据的类型。有时候,如果GraphQL响应中包含了__typename字段,但是它并不是我们所期望的,我们可能需要删除它。

要从导致突变失败的GraphQL响应中删除__typename字段,可以通过以下几个步骤实现:

  1. 解析响应:首先,需要解析GraphQL的响应,将其转换为可操作的数据结构。这可以使用GraphQL客户端库(如Apollo Client、Relay等)提供的工具函数或自定义代码来完成。
  2. 遍历响应:遍历解析后的响应数据结构,查找并删除所有的__typename字段。这可以通过递归遍历对象和数组,并删除匹配的字段来实现。
  3. 更新响应:在遍历的过程中,对于每个匹配的__typename字段,可以直接删除它,或者将其设置为nullundefined,或者根据具体需求进行其他操作。
  4. 重新序列化响应:完成更新后,将响应数据结构重新序列化为GraphQL的响应格式,以便于后续的处理或传输。

下面是一个示例代码片段,演示了如何使用JavaScript和Apollo Client库从导致突变失败的GraphQL响应中删除__typename字段:

代码语言:txt
复制
import { visit, BREAK } from 'graphql';

function removeTypenameField(response) {
  visit(response, {
    Field: {
      enter(node) {
        if (node.name.value === '__typename') {
          // 删除__typename字段
          return BREAK;
        }
      },
    },
  });
  
  return response;
}

// 假设response为导致突变失败的GraphQL响应
const mutatedResponse = {
  data: {
    __typename: 'Mutation',
    // 其他字段...
  },
};

const cleanedResponse = removeTypenameField(mutatedResponse);
console.log(cleanedResponse);

以上示例代码中,removeTypenameField函数接收一个GraphQL响应对象,并使用visit函数遍历响应数据结构的每个字段。如果发现字段名为__typename,则返回BREAK,从而删除了__typename字段。最后,将处理后的响应数据结构打印到控制台。

需要注意的是,这只是一个简化的示例代码,实际情况下可能需要根据具体的响应结构和需求进行相应的修改和优化。

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

以上是关于如何从导致突变失败的GraphQL响应中删除__typename字段的完善且全面的答案,希望对您有帮助。

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

相关·内容

干货 | 携程基于 GraphQL 前端 BFF 服务开发实践

我们在一次 GraphQL 查询,通过这些关联字段,获取到所需数据,而不必再次发起请求。...,错误节点位置可能会发生变化 • 任意节点都可能产生错误,要处理潜在情形太多 这个陷阱是导致 GraphQL 项目失败重大诱因。...如上,在 GraphQL Specification  6.4.4Handling Field Errors ,明确了如何置空问题。...在这个过程可以实现相同请求合并只发一次。 六、工程化实践 6.1 异常处理 在 GQL 关联查询父节点失败导致子节点异常情况很常见。...【推荐阅读】 携程微信小程序如何进行Size治理 47%到80%,携程酒店APP流畅度提升实践 携程动态表单DynamicForm设计与实现 开源 | 携程 Foxpage 前端低代码框架  “

2.6K20

Go GraphQL 教程

返回JSON 格式响应、状态码、或者错误信息 前端或者客户端,根据具体需求,调用接口,对接口返回字段进行处理。...Schema 是类型语言合集,定义了具体操作(比如:请求、更改),和对象信息(比如:响应字段) schema.graphql type Query { ping(data: String...是否不包含该字段、@deprecate 是否废弃该字段 内联片段:接口类型或者联合类型获取下层字段字段 类型定义、对象定义 内置类型:ID、Int、Float、String、Boolean,...2 schema 是所有请求、响应、对象声明集合,对后端而言,是开发依据,对前端而言,是 API 文档。 如何定义 schema ?...Step1: 定义类型对象字段 定义类型对象和响应字段设计几乎保持一致。

4.4K20
  • GraphQL API渗透测试指南

    下面介绍几种有效方法。常见GraphQL路径判定GraphQL API与Restful API不同,一般来说它URL比较固定,这也是它特性之一,单个请求获取应用程序所需所有数据。...graphql......通用查询探测由于GraphQL API存在一个__typename 保留字段,该字段会以字符串形式返回查询对象类型,所以我们可以向未知API发送query{__typename...},如果响应返回{"data": {"__typename": "query"}},那么就可以确定该API为GraphQL API。...通过修改id参数进行水平越权,获取想要敏感信息。命令执行由于GraphQL API没有充分验证输入或者没有严格过滤,导致在一些查询可以通过链接形式拼接 UNIX 命令,达到命令执行目的。...发现Cookie存在明显disable字段。修改disable为enable。成功绕过保护机制。

    1.2K30

    AI网络爬虫:用GraphQL查询爬取动态网页数据

    - `query`:两个请求GraphQL查询字符串是相同。...以下是两个请求载荷不同点: - `variables``after`字段: - 第一个请求`after`字段值是 `"191"`。 - 第二个请求`after`字段值是 `"167"`。...`after`字段通常用于分页,它指定了哪个点开始获取数据。在这个GraphQL查询,它决定了搜索结果哪一条记录开始返回数据。...再继续查看其他请求载荷after字段:-1、47、 71、95 搜索结果是205 个,显然`after`字段值是-1开始,每次递增24,以215结束 在chatgpt输入提示词: 你是一个Python...获取网页响应json数据,打印出来; 提取"data"键嵌套"search"键嵌套"edges"键内容; "edges"键对应值是一个json数据; 将这个json数据所有的键名作为Excel

    10310

    GraphQL在现代Web应用应用与优势

    GraphQL是一种现代API查询语言,它在现代Web应用得到了广泛应用,因为它提供了一种高效、灵活且强大方式来获取数据GraphQL基础快速应用示例:1....查询语言:查询、突变、订阅在GraphQL,查询和突变是通过JSON-like结构表示字符串。...查询结构:字段和参数查询结构由字段和参数组成。在上面的查询示例,user是字段,id和email是user字段字段。参数如id: 1用于定制查询。4....我们使用useQueryGraphQL服务器获取数据,并渲染用户和他们帖子信息。...下面展示如何使用一个自定义@auth指令来控制访问权限。首先,假设我们定义了一个@auth指令,用于限制对某些字段访问,要求用户必须登录。

    9810

    安息吧 REST API,GraphQL 长存

    UI 需要哪些数据,与开发人员在 GraphQL 声明该数据方式之间存在紧密联系。 本文将详细介绍 GraphQL 如何解决所有这些问题。...例如,客户端不能指定为该资源记录选择哪些字段。这意味着 REST API 服务将始终返回所有字段,而不管客户端实际需要哪些。GraphQL 针对这个问题定义术语是超量获取不需要信息。...本质上,我们可以添加新字段,而不需要删除字段,因为我们有一个图,并且我们可以通过添加更多节点来灵活地扩展图。因此,我们可以在图上留下旧 API,并引入新 API,而不会将其标记为新版本。...如果我们有一个 GraphQL 查询,我们明确知道如何在 UI 中使用它响应,因为查询与响应具有相同“结构”。我们不需要检查响应才知道如何使用它,我们也不需要有关 API 任何文档。...GraphQL 查询字段被设计为独立功能,并且使用数据库数据解析这些字段可能会导致对已解析字段产生新数据库请求。

    2.7K30

    使用 GraphQL 和 Ballerina 操作多个数据源

    在本文中,我们将探讨如何使用 GraphQL 和 Ballerina 将 MySQL 数据库数据作为 API 公开出来。...在下一节,我们将探讨这些特性如何帮助你开发 GraphQL 应用程序。 一个书店示例 GraphQL 服务器数据源可以是任何东西,如数据库、另一个 API 或提供数据服务等。...这个示例演示了如何使用 Ballerina 实现 GraphQL 服务器,将 MySQL 数据库数据以及通过另一个 API 调用获取数据公开出来。...服务类型每一个资源方法表示 GraphQL 对象一个字段,资源方法可以有输入参数,这些输入参数被映射到相应字段参数。...今日好文推荐 开源大佬谷歌离职:在 Go 语言项目上停滞不前,要去更小企业寻求变革 这群 WebAssembly 大佬创业失败了:有时 JS 迁移到 Wasm 并不值当?

    2.4K20

    【JS】197-【译】更优秀GraphQL中文文档-服务器端

    Schemas and Types 本文中,你会学到 GraphQL 类型系统所有细节并且它是如何去描述什么样数据是可以被查询。...Object types and fields GraphQL schema 最基础组件是 object types,它标识了你可以后端服务获取哪些对象和子字段。...现在你知道了 GraphQL object type 是什么样子,并且如何去阅读这门语言。...这样作用是 验证这种类型参数只能是特定某几个值 整个类型系统,该字段始终只有有限几个值可选 下面是 一个枚举定义在 GraphQL schema language 是什么样?...在本例,如果你查询字段返回是 SerchResult union type ,也需要用到内联片段 query { search(text: "an") { __typename

    1K20

    超越 REST

    关于最后一点:更改表类型将会打破关联视图,但是通过封装在事务更改,可以删除视图、更新该列,然后可以在提交事务之前重新创建视图。...,数据类型为 JSON: json 字段内部结构(hello world 和 2 这两个子字段)在生成 GraphQL 模式是不透明。...另外,对这两个字段描述都被显示在生成 GraphQL 模式。...关于安全性(如何将其与我们 IAM 基础设施集成,以及如何在数据库实施行级访问控制?)和性能(如何限制查询以避免一次选择所有行来对数据库进行 DDoS 攻击?)...另外,Graphile 默认行为是为表和视图生成突变,但是智能注解 @omit create,update,delete 将从模式删除突变

    3K20

    GraphQL项目中前端如何预生成Persisted Query

    然而常见 HTTP 缓存只能存储 GET 响应,对于其他类型响应则无能为力。/ 当然, 我们可以将默认请求类型改为GET, 但是当schema过大时候 ,就会出问题了....消息体暴露带来安全问题 我们在请求时候, 可以http请求Headers里面看到我们query, 里面有完整schema, 那么有没有解决这两点办法呢?...预生成persisted query 刚刚我们介绍了, 如何在使用过程中生成. 但是如何预生成呢? 也就是, 在前端部署过程或者是在访问页面之前就已经生成好....如何去预生成 我们这里采用是, 在前端部署过程通过已有schema在node运行生成一段querystring, 通过hash后发给后端, 后端将这段query持久化起来 具体做法是: 获取源头....graphql 文件 去遍历获得它fragment 通过AST给每一个节点上面添加__typename (这一步可能不需要, 因为如果你请求设置了不带__typename, 就没必要了) hash

    1K20

    挖洞经验 | 开放重定向漏洞导致账户劫持

    最近,在测试目标网站https://target.com过程,作者通过综合其Web应用存在开放重定向、路径遍历和CSRF漏洞,最终实现了账户劫持。 .....所以我就以615601’为id号,发起请求,看看服务端会抛出什么错误响应? 事实证明我是对,服务端响应给出了API详细路径目录,我接着又构造了615601../../...../id值发起了请求,服务端响应给出了其网站根目录路径: 该问题原因可能在于URL解析库在请求前不当地执行了目录路径遍历。...目标网站使用REST和GraphQL方式来获取、更改和删除用户数据,而GraphQL有点类似REST API代理,其可以向服务端不同REST端点发起ssrf请求,以获取或更改相关数据,就比如以下GraphQL...以下是最终响应: 无法读取请求响应,原因在于服务端希望请求是JSON形式。但尽管如此,我还是可以利用该方式探测到目标的内部网络架构,但最终漏洞危害也会仅限于危而已。

    1.9K20

    记一次通过c#运用GraphQL调用Github api

    一、Graphql是什么   最近在折腾使用Github api做个微信小程序练练手,本篇文章就是在这个过程记录。   ...GraphQL 对你 API 数据提供了一套易于理解完整描述,使得客户端能够准确地获得它需要数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大开发者工具。...二、.net下如何运用GraphQL   由于我需要做一个定时任务将github上数据定时拉到本地,所以自然选择了后端处理方式。...另外GraphQL是强类型,所以当笔者用到search返回结果并不是一个明确数据对象时,先需要通过node下__typename字段来获得实际对象是什么。...这个就是GraphQL设计天然优势之一,按需获取。单在接下去运用时候又需要引入一个新概念fragment,这个可以理解为一个模板,通过这个模板来向服务端指明需要获取数据字段

    1.3K20

    PayPal大规模采用GraphQL探索和实践

    字段和方法级检测:我们有内部检测工具,可以显示端点花费时间和使用参数,但是很难找到使用字段。如果没有这些信息,我们就无法知道某个字段是否可以安全删除,或者是否仍在使用。...这些标准定义了命名约定、GraphQL 类型、请求头标准、指令标准和异常处理技术。 所有 GraphQL 操作都需要指定特殊指令,这些指令描述查询、突变字段所有授权要求。...由于这些工具很多依赖于 API 响应状态码——200、400、500 等等,因此我们很难将 GraphQL 响应(都是 200)映射到这些工具。 PayPal GraphQL 增长非常快。...我们演示了 GraphQL 如何帮助提高内部和外部开发人员生产力,GraphQL 如何帮助减少交付功能时间,以及我们如何能够向客户端隐藏复杂性。...通过 GraphQL,我们能够展示我们学习、工具和字段级别的监测情况。 8 你如何开始在自己公司采用 GraphQL

    3.1K20

    面对极度复杂前后端业务场景,使用 GraphQL 正确姿势

    UnderFetching指接口中取到数据远低于需要展现数据,由此引发了N+1问题,即需要根据已取得接口中ID或者详细信息再去请求对应接口,这就导致了前端请求异步变成了同步。...GraphQL可以由前端来定义Query,页面和数据能完美匹配。同时一旦Schema确定,前后端就可以快速并行开发。前端对字段及返回类型也能够了如指掌,GUI清晰展现了字段类型结构。...如何使用轮子 工业控制设备(前端) 前面提到过我们终端设备还包含树莓派,这是一个工业控制设备,一般被放置在用户厂房,用来打印记录库房数据。...比如多次请求触发导致返回结果为underfined,之所以会这样是由于第一个接口请求发送出去后,还在loading阶段时,同一个接口又发送了第二次,导致返回数据发生冲突变成undefined。...还有资源对象和id重复导致资源数据被覆盖问题,这是由Apollo数据存储特性所造成,Apollo每个资源对象类型和id是定义数据字段唯一标识。

    7.5K20

    API NEWS | Jetpack WordPress插件存在API漏洞

    API应被授予执行其业务目标所需最低权限。代码错误:正如读者所知,许多API漏洞是由于代码库缺陷造成导致BOLA、BFLA和身份验证中断等漏洞。...监控和日志记录:实时监控API使用情况,并记录重要操作和事件,这样可以快速检测异常行为并采取适当响应措施。...它发出一个内省查询,请求给定 URL 所有查询和突变(通过指向实时终结点链接或通过 JSON 文件),并提供结构化视图以帮助您浏览结果。...安全角度来看,文章最后提出了一些保护GraphQL API 有用建议:在API终端节点上禁用侦测,除非有明确且易于理解理由来启用它,这可以防止攻击者了解终结点工作原理。...查看API架构,确保它不会向公众公开意外字段。确保禁用建议,以防止攻击者使用工具收集有关基础架构信息。确保您API架构不会公开私有用户字段,例如PII等信息。

    27630

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

    在传统基于 REST API 方法,客户端发出请求,而服务端决定响应。 但是在 GraphQL ,客户端可以精确地确定其服务器获取数据。...如果你不确定应用程序需求以及将来如何存储数据,则 GraphQL 在这里也很有用。要修改查询,你只需要添加所需字段名称,这极大简化了随着时间推移而发展你应用程序过程。...另一部分涉及实际获取数据,这是通过使用解析器完成,解析器是一个返回字段基础值函数。 让我们看一下如何在 Node.js 实现解析器。...给定一个 ID 数组,我们将一次性数据库获取所有这些 ID;同样,后续对同一 ID 调用也将从缓存获取该项目。要使用 dataloader 来构建这些,我们需要两样东西。...随着应用程序成长和变化,它们 API 也会随之变化,很可能需要删除或修改 GraphQL 字段和对象。

    8.3K40

    一种不错 BFF Microservice GraphQLREST API 层开发方式

    还添加了基于响应性扩展示例,以演示如何将其用于构建微服务 API 边缘服务(edge-service)、前端后端(BFF)或将其用作构建任何类型微服务基础。...API 使用熔断模式示例 (/hystrix) scraper - 如何使用 scrape-it 网站上抓取数据示例 (/scraper) 使用 swagger UI 以获得示例 API 完整列表...Mocks 作为 TDD 一部分,我们可能需要模拟 graphql 响应,直到我们能够实现解析器为止 该基础结构设置为仅为当前未实现解析器添加模拟。...因此,一旦实现可用,实际解析器就会接手。同样,如果解析器执行失败,那么这将落在模拟响应上。此功能只能在开发期间使用,因此已添加检查以禁用“生产”版本此功能。...Bearer token,用于后续调用任何 /examples api,将导致基于角色授权失败 GraphQL Directives 这项工作正在进行

    2.3K10
    领券