首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Rust 和 Wasm 的融合,使用 yew 构建 web 前端(4)- 获取 GraphQL 数据并解析

    每次查询及其它操作,用户都要将令牌(token)作为参数,传递给服务后端,以作验证。 query AllUsers($token: String!)...,可以实现与查询描述文件(如 all_users.graphql)中查询同名的结构体。...接下来,我们构建 graphql_client 查询体(QueryBody),我们要将其转换为 Value 类型。项目列表查询没有参数,构造简单。...本文实例中,为了演示,我们将令牌(token)获取后,作为字符串传送,实际应用代码中,当然是作为 cookie/session 参数来获取的,不会进行明文编码。...我们需要将 graphql_client 查询体(QueryBody)转换为字符串,压入到 web-sys 请求体中。

    8.1K30

    使用 tide、handlebars、graphql 开发 Rust web 前端(2)- 获取并解析 GraphQL 数据

    每次查询及其它操作,用户都要将令牌(token)作为参数,传递给服务后端,以作验证。 query AllUsers($token: String!)...使用 graphql_client 构建查询体(QueryBody) 在此,我们需要使用到上一节定义的 GraphQL 查询描述,通过 GraphQLQuery 派生属性注解,可以实现与查询描述文件(如...我们以用户列表查询为例,传递我们使用 PBKDF2 对密码进行加密(salt)和散列(hash)运算后的令牌(token)。 本文实例中,为了演示,我们将令牌(token)获取后,作为字符串传送。...实际应用代码中,当然是作为 cookie/session 参数来获取的,不会进行明文编码。...注意:为了演示,我们将令牌(token)获取后,作为字符串传送。实际应用代码中,是通过 cookie/session 参数来获取的,不会进行明文编码。

    1.6K30

    C# 一分钟浅谈:GraphQL 中的缓存策略

    GraphQL 作为一种数据查询和操作语言,提供了比传统 REST API 更灵活的数据获取方式。然而,随着请求量的增加,性能问题逐渐显现,缓存策略成为优化 GraphQL 性能的关键手段之一。...基础概念GraphQL 是一种用于 API 的查询语言,它允许客户端精确地请求所需的数据,从而减少不必要的数据传输。GraphQL 服务器接收客户端发送的查询请求,解析并执行这些查询,最后返回结果。...在 GraphQL 中,客户端库(如 Apollo Client)通常会自动管理缓存。当客户端发送一个查询请求时,如果缓存中已经存在相同的数据,则直接从缓存中读取,而不需要再次发送请求。...通常,缓存键应包含查询的所有参数,以确保不同参数的查询不会互相干扰。缓存失效策略:缓存数据需要定期更新或失效,否则可能会导致数据不一致。常见的缓存失效策略包括时间过期、事件驱动和显式清除。...代码案例以下是一个完整的 C# 示例,展示了如何在 ASP.NET Core 中实现 GraphQL 服务器端缓存。

    13910

    C# 一分钟浅谈:GraphQL 中的缓存策略

    GraphQL 作为一种数据查询和操作语言,提供了比传统 REST API 更灵活的数据获取方式。然而,随着请求量的增加,性能问题逐渐显现,缓存策略成为优化 GraphQL 性能的关键手段之一。...GraphQL 服务器接收客户端发送的查询请求,解析并执行这些查询,最后返回结果。 缓存 是一种提高系统性能的技术,通过存储计算结果并在后续请求中重用这些结果,减少重复计算的时间和资源消耗。...在 GraphQL 中,客户端库(如 Apollo Client)通常会自动管理缓存。当客户端发送一个查询请求时,如果缓存中已经存在相同的数据,则直接从缓存中读取,而不需要再次发送请求。...通常,缓存键应包含查询的所有参数,以确保不同参数的查询不会互相干扰。 缓存失效策略:缓存数据需要定期更新或失效,否则可能会导致数据不一致。常见的缓存失效策略包括时间过期、事件驱动和显式清除。...代码案例 以下是一个完整的 C# 示例,展示了如何在 ASP.NET Core 中实现 GraphQL 服务器端缓存。

    10110

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

    GraphQL 的操作类型如下: 查询(读取); 突变(写入 / 更新); 订阅(连续读取)。 这些操作都只是一个字符串,需要根据 GraphQL 查询语言规范进行构造。...服务类型中的每一个资源方法表示 GraphQL 对象的一个字段,资源方法可以有输入参数,这些输入参数被映射到相应字段的参数。...allBooks 和 bookByName 是通过 GraphQL 查询获取书籍数据的资源函数,因此,它们返回“Book”数组。要将新书添加到数据库中,可以调用“addBook”远程方法。...它将书籍的信息作为输入参数,并返回一个 int 值,这个值表示已插入的书籍的索引,如果发生错误就返回 -1。...你可以在命令行中使用 curl 向端点发送 HTTP POST 请求,并将 GraphQL 查询作为 JSON 传递给它。

    2.4K20

    GraphQL 从入门到实践

    注意:在 Query 查询字段时,是并行执行的,而在 Mutation 变更的时候,是线性执行,一个接着一个,防止同时变更带来的竞态问题,比如说我们在一个请求中发送了两个 Mutation,那么前一个将始终在后一个之前执行...,分别为 parent:当前上一个解析函数的返回值 args:查询中传入的参数 context:提供给所有解析器的上下文信息 info:一个保存与当前查询相关的字段特定信息以及 schema 详细信息的值...2.5 请求格式 GraphQL 最常见的是通过 HTTP 来发送请求,那么如何通过 HTTP 来进行 GraphQL 通信呢 举个栗子,如何通过 Get/Post 方式来执行下面的 GraphQL 查询呢...} } Hello world 总是如此愉快,下面我们来进行稍微复杂一点的查询 查询入口 users 查找所有用户列表,返回一个不可空但长度可以为 0 的数组,数组中如果有元素,则必须为 User 类型...;另一个查询入口 user 接受一个字符串,查找 ID 为这个字符串的用户,并返回一个 User 类型的可空字段 # src/schema.graphql # Query 入口 type Query

    2.5K31

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

    但是,与任何框架或语言一样,GraphQL 也需要权衡取舍。在本文中,我们将探讨使用 GraphQL 作为 API 查询语言的利弊,以及如何开始构建实现。...:一个代表父的对象(在最初的根查询中,这个对象通常是未使用的),一个包含传递给你的字段的参数的 JSON 对象。...因为我们使用的是 Express,所以我们可以使用 express-graphql 包来暴露我们的模式作为端点。...默认情况下,express-graphql 会将当前的 HTTP 请求作为上下文的值来传递,但在设置服务器时可以更改: app.use( '/graphql', express_graphql({...但这个缺点也是积极的:通过仔细设计你的 Graphql Schema,你可以避免在更容易实现(也更容易破坏)的 REST 端点中明显的陷阱,如命名的不一致和混乱的关系。

    8.3K40

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

    前言 最近,GraphQL 在构建后端 API 方面获得越来越多大公司的青睐, 如 PayPal、Facebook、Hasura、去哪儿等公司都做了大量实践。...今天本文将介绍如何在 springboot 项目中实践 GrapQL API....带有@QueryMapping注释的函数将成为查询的处理程序。 查询名称会自动映射到函数名称,或者使用 @QueryMapping接口的value参数(在本例中为person)显式定义它。...然后,我们使用指定参数名称@Argument注释来定义输入。 @SchemaMapping将成为查询嵌套字段的处理程序。映射基于函数名称本身(如上所示)或通过设置值参数(如下所示)。...GraphiQL 在内部对端点 /graphql 进行 POST 调用以发送查询。因此也可以使用 curl 命令执行此操作。

    2.6K40

    防止你的GraphQL API被恶意查询

    在这篇文章中,他描述了他们是如何在攻击中保护GraphQL API。 使用GraphQL,你可以随时查询想要的内容。 这对于使用API来说是惊人的,但也具有复杂的安全隐患。 ...虽然在其他应用层有一些缓解措施使在开始发送查询变得困难(如CORS),但它们无法完全防止发生。 大小限制 我们考虑的第一种天真的方法是通过原始字节来限制传入查询的大小。 ...由于查询是以字符串形式发送的,因此快速检查就足够了: app.use('*', (req, res, next) => {   const query = req.query.query || req.body.query...你可以指定某个字段的复杂程度,乘以哪个参数以及最大成本,而graphql-cost-analysis会为你完成其余的工作。...总结 总而言之,我建议使用深度和数量限制作为任何GraphQL API的最低保护 – 它们很容易实现,并且会提供足够的安全性。 根据您的特定安全要求和架构,您可能还需要做查询成本分析。

    1.9K10

    GraphQL 基础实践

    什么是 GraphQL GraphQL 是一款由 Facebook 主导开发的数据查询和操作语言, 写过 SQL 查询的同学可以把它想象成是 SQL 查询语言,但 GraphQL 是给客户端查询数据用的...操作名称:操作名称是个可选的参数,操作名称对整个请求并不产生影响,只是赋予请求体一个名字,可以作为调试的依据。...在 GraphQL 中,有如下几种标量类型:Int, Float, String, Boolean, ID ,分别表示整型、浮点型、字符串、布尔型以及一个ID类型。...后面的代码例子中将会清楚地了解 Resolver。...ThinkJS 中配置中间件有三个关键参数: match: 用于匹配 URL,我们想让我们的请求发送到 /graphql 中进行处理,那么我们对这个路径进行 match 后进行处理; handle:中间件的处理函数

    12.8K20

    GraphQL API 漏洞挖掘基础学习

    2、通用查询 如果发送query{__typename}到任何 GraphQL 端点 它将{"data": {"__typename": "query"}}在其响应中的某个位置包含该字符串。...测试 GraphQL 端点时,您应该尝试将通用查询发送到以下位置: /graphql /api /api/graphql /graphql/api /graphql/graphql 如果这些常见端点没有返回...用户只需要提供正确的参数,就可以访问到一些未授权信息,成为IDOR 如何发现GraphQL架构信息 最好的方式是使用自省查询,自省是一个内置的GraphQL函数,可以让我们查询服务器以获取相关的架构信息...,我们可以发送到重发器,最新版的bp可以在其中找到GraphQL 自省启动了但查询未运行 如果启用了自省但上述查询未运行,尝试从查询结构中删除onOperation、onFragment和指令。...许多端点不接受这些指令作为自省查询的一部分,通过删除它们,通常可以更成功地进行自省。

    23610

    GraphQL 的入门指南

    用户也会有一个 name 和 email,所以给它一个字符串类型和一个 Int 类型。 但是,在每一行的结尾的 !呢? 感叹号表示字段不可为空,这意味着每个字段必须在每个查询中返回一些数据。...首先,在文件 schema.graphql 编写一个名为Query 的新类型: type Query { users: [User!]! } 这很简单:用户查询将返回给我们一个或多个用户的数组。...} 如上所见,使用 GraphQL 中的查询,还可以传递参数。在本例中,要查询特定用户,所以要传递其用户的 ID。 但是,你可能想知道: GraphQL 如何知道从哪里获取数据?...在 user 函数中,我们将 id 作为参数传递,然后返回与传递的 id 匹配的特定 user,这很简单。...当服务器中发生更新时,服务器将运行订阅中指定的 GraphQL 查询,并向客户机发送一个新更新的结果。 在这篇文章中,我们不打算讨论订阅,但是如果你想阅读更多关于订阅的信息,请单击这里。

    2K30

    ASP.NET Core WebApi判断当前请求的API类型

    举个例子,在处理 RESTful API 请求时,我们可能更关注资源的状态,而在处理 GraphQL 请求时,可能需要关注查询的结构。...2.2 GraphQL APIGraphQL 是 Facebook 提出的查询语言,它允许客户端指定所需要的数据结构,而服务器则返回精确的数据。...与 RESTful API 不同,GraphQL 不依赖于固定的 URI 结构,而是通过一个统一的端点(通常是 POST 请求)来接收查询和变更操作。特点:单一的端点。...请求体通常包含 GraphQL 查询或变更操作。2.3 gRPC APIgRPC 是 Google 提出的高性能远程过程调用(RPC)框架。...APIGraphQL 请求通常通过 POST 请求发送,而且请求体包含一个 query 字段,指示请求的 GraphQL 查询。

    1.8K00

    接口设计中的数据精简技巧:提升效率与优化传输

    本文将探讨常见的数据精简技术,如字段筛选、数据压缩,以及如何在实际开发中使用这些技术优化接口数据传输效率。...例如,GraphQL支持灵活的字段查询,而传统REST接口也可以通过参数实现字段筛选。场景:一个用户详情接口,前端只需要用户的姓名和头像,但完整数据包括地址、电话等。...数据压缩使用数据压缩技术(如GZIP、Brotli)在传输过程中减少数据量。场景:适用于传输大规模JSON或文本数据的接口。数据分页对于大数据量查询,通过分页返回减少单次传输的数据量。...字段筛选逻辑:req.query.fields获取客户端传入的字段参数,如果为空则默认返回所有字段。fields.split(',')将字段参数转换为数组形式。...实现字段筛选请求:fetchUserData(fields: string)是发送HTTP请求的方法。构造了请求的URL,将fields作为查询参数拼接到URL中。

    9532

    GraphQL API渗透测试指南

    graphql......通用查询探测由于GraphQL API中存在一个__typename 的保留字段,该字段会以字符串形式返回查询对象的类型,所以我们可以向未知API发送query{__typename...内省查询向未知API发送__schema字段使用自省来发现架构信息,该字段在所有查询的根类型上都可用。...ipAddr # 1000 } } }}越权查询/信息泄露通过内审查询获取到相关信息后,可以进一步利用,GraphQL API作为单路由API接口在查询过程中往往会忽略一些鉴权问题...或者是通过systemDiagnostics接受某些 UNIX 二进制文件作为调试目的的参数,例如 whoami、ps等,在获取相关凭证或者权限之后,可以进行拼接来达到命令执行的目的。...graphql注入类似于SQL注入拼接字符串,在GraphQL API进行相关查询时,可以通过拼接的方式进行注入来获取数据或者改变查询逻辑。

    1.5K30

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

    欢迎来信与译者讨论 GraphQL 相关问题 ! Schemas and Types 本文中,你会学到 GraphQL 类型系统的所有细节并且它是如何去描述什么样的数据是可以被查询的。...Type System 如果你已经见过 GraphQL query,那么你就知道 GraphQL 查询语言基本上是在对象上查询指定的字段。...代表着 Episode objects的数组,并且是非空数组,而且请求 appearsIn 字段的时候必须传一个数组,数据里面每个数据都必须是 Episode 类型的。...Input types 目前为止,我们只讨论过传递 scalar values,比如 enums 或者 strings 作为参数。但是你可以传递复杂的对象作为参数。...在 GraphQL schema language 中,input type 和其他的常规的 object types一样,但是不是用 type 关键字了,而是用 input 作为关键字。

    1.1K20
    领券