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

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

运行单元测试 单元测试与要测试的模块或类位于同一目录 所有单元测试都需要有一个扩展名 \*.spec.ts npm run test 运行集成测试 集成测试与要测试的模块或类位于同一目录 所有集成测试都需要有一个扩展名...这将在构建中设置集成测试环境 npm run itest:build 运行 node 服务器并对其进行集成测试 这等待服务器启动,运行测试,然后在完成时终止所有进程 npm itest:run 尝试一下...在所有查询传递。...Compression 默认情况下,压缩是在服务器上启用的,并且基于压缩模块 配置详细信息位于 compression.ts 文件 如果需要在不压缩的情况下获取响应,请在请求头中传递 x-no-compression...默认情况下,这假设 SonarQube 服务器使用默认端口在本地运行 运行单元测试 npm run test 测试结果 sonar 兼容格式收集在结果文件 将结果推送到 SonarQube npm

2.3K10
您找到你想要的搜索结果了吗?
是的
没有找到

用Node.js创建安全的 GraphQL API

同时它也是开源的,通常会与REST和其他架构放在一起进行比较。简而言之,它基于: GraphQL查询 —— 允许客户端进行读取和控制接收数据的方式。...npm start 进行构建和测试了。...在后台场景,我们的配置会将 TypeScript 代码编译为纯 JavaScript,然后在build文件执行构建。 现在为GraphQL API配置一个基本框架。...服务器测试 好了,现在可以编写第一个自己的查询了,先定义为“hello”。 ? 第一次查询 请注意,我们在typeDefs定义它的方式,页面可以帮助我们构建查询。 这很好,但我们怎样才能改变值呢?...; 添加JWT拦截器保护API; 使用更有效的方法处理密码哈希; 添加单元和集成测试; 请记住,我们在Git (https://github.com/makinhs/node-graphql-tutorial

1.6K30

GraphQL 快速搭建服务端 API

( fig 1.1 这个看起来很好用的图形界面叫做 GraphiQL,是一个基于浏览器的 GraphQL 快速交互 IDE,后面介绍 Flask 集成的章节也会提到。)...在我们的例子,现在仅提供 Query 支持一个查询操作: class Query(graphene.ObjectType): starship = graphene.Field(Starship...处理带文件的请求 GraphQL 的请求本质是一个 body 里装了一个查询语句的 POST 请求,所以需要一些额外的处理才能支持 multipart 请求,比如使用中间件,客户端的网络接口也需要自定义...个人经验是我会在开发过程打开 SQLAlchemy engine 的 echo 属性,然后监控查询操作产生的每一句 SQL 语句,了解实际产生的语句是否合理、是否产生了额外的数据库查询等。...结语 关于如何在服务端搭建一个简单的 GraphQL 服务就说到这里,下次有机会我们会聊一下 GraphQL 的客户端和在 RN 的使用。欢迎大家继续关注,对于本文中的内容也欢迎指正。

2.4K30

你不知道的 GraphQL

1+N查询问题 管理自定义Scalar类型 错误处理 日志 认证 & 中间件 Resolvers的单元测试 查询引擎的集成测试 Resolvers拆分 组织Schemas 结语 目标 我们的目标是针对一个移动...把resolver定位为一个纯函数,是GraphQL设计者们的另一个明智之举。 查询引擎的集成测试 那么,如何来测试数据依赖,类型和聚合逻辑呢?...这是另一种类型的测试,一般叫集成测试,需要在查询引擎上跑。 这需要我们运行一个http server来进行继承测试么?然而并不是。...你可以单独对查询引擎进行测试而不需要跑一个服务,使用graphql工具即可。...Resolvers拆分 为了能测试resolver和查询引擎,我们不得不把代码拆分到多个独立的文件。从开发者角度来看这是一个值得的工作 - 它提供了模块化和可维护性。

3.3K20

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

上一篇文章《crate 选择及环境搭建》,我们对 HTTP 服务器端框架、模板引擎库、GraphQL 客户端等 crate 进行了选型,以及对开发环境进行了搭建和测试。...然后,在 frontend-handlebars/graphql 文件创建一个新的文件 all_projects.graphql,描述我们要查询的项目数据。...使用 graphql_client 构建查询体(QueryBody) 在此,我们需要使用到上一节定义的 GraphQL 查询描述,通过 GraphQLQuery 派生属性注解,可以实现与查询描述文件...当然,Rust 文件,结构体仍然需要我们定义,注意与查询描述文件查询同名。...我们用户列表查询为例,传递我们使用 PBKDF2 对密码进行加密(salt)和散列(hash)运算后的令牌(token)。 本文实例,为了演示,我们将令牌(token)获取后,作为字符串传送。

1.5K30

【API架构】REST API 行业辩论:OData vs GraphQL vs ORDS

本文比较了标准 API 和服务,通过 Internet 查询数据以进行分析、集成和数据管理。...重点是实现跨 API 的互操作性,进行分析、集成和数据管理。...这减少了应用程序的响应大小和处理。但是,它没有提供一种机制来指示字段已被弃用。 OData 更加灵活,因为可以轻松编写查询返回所有字段。OData 正在将模式版本控制添加到规范解决此问题。...例子 为了直观地说明使用这些 API 的差异,以下两个代码示例展示了如何在 GraphQL 和 OData 执行“排序依据”。...但是,GraphQL 没有任何内容可以告诉您可以为这些参数传递什么以及指定为参数的值如何导致函数运行。并且这种行为在不同实现的基础上可能会有所不同。

2.1K30

BI仪表板数据可视化大屏

; image.png (3)用户Token,请确保使用的Token 具有足够权限(查看仪表板,集成设计器则需创建仪表板权限)。...这种方式需要BI系统支持GraphQL API,这样几乎所有界面操作均可通过调用API完成,例如在门户页面展开某个分类下的文档列表时,通过浏览器调试窗格就可以看到实际的GraphQL API调用。...集成的权限管理 BI仪表板因为涉及到企业核心业务数据信息,因此用户权限是关键的功能,因此对于用户权限管理也需要有不同方案进行处理,我们大家最熟悉的安全令牌来举例: 使用固定令牌集成时,相当于一个固定的用户身份查看报表内容...(2)这种方法仍然使用固定令牌进行集成,即在集成用的URL,QueryString的token参数值仍然是固定的字符串。...单点登录集成 如果业务系统有更高的安全性要求,可在业务系统登录画面,通过登录API,实现单点登录集成,并将获取的令牌放在会话变量

8.2K10

【译】如何在 Node.js 创建安全的 GraphQL API

原文地址:How to Create a Secure Node.js GraphQL API 作者:Marcos 本文的目的是提供一份快速指南 -- 《如何快速在如何在 Node.js 创建安全的...简而言之,它基于两部分: GraphQL Queries(查询):允许客户端进行读取和操作,并可以指定数据的接收格式 GraphQL Mutations(变更):向服务端写入数据,可以约定数据的写入方式...如前面所讲述的那样,查询 (query) 是客户端从 API 读取和操作数据的方式。你可以传递一个对象的类型,并且定义所希望返回的字段类型。...; 创建模块 (Module) 的基本方法; 测试我们的 GraphQL API; 为了将内容侧重于开发使用,本文忽略了开发中一些重要的内容,简单总结如下: 新增内容时需要校验 对服务的错误进行正确处理...校验用户在每个请求中所使用的字段 添加一个 JWT 拦截器来保护 API 接口 用更有效的加密算法来处理密码 添加单元和集成测试 请记住,我们在 Git 上有完整的源代码。

2.5K20

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

这是一个问题,因为我们为了获取一条信息进行了多次往返请求。GraphQL 帮助解决了这个问题,因为它允许我们在一次往返获取所需的一切。...我们面临的问题是,当我们构建一个新版本时,与旧版本集成的客户端如果不与新版本重新集成,就不会收到这些更新。有时,新版本的文档或参数会发生更改。...更容易测试:Apollo Client 等 GraphQL 工具可以更容易地在 React 等 UI 添加 GraphQL 查询。它有助于保持代码位于同一位置,并有助于调试和分离关注点。...图片来源:Possessed Photography on Unsplash 我们仍在创建一种标准方法来应对 GraphQL 技术的挑战,异常处理、身份认证、文件处理和批处理。...我们的前端开发人员立即看到了使用 GraphQL 的好处。说服在 UI 团队工作的后端开发人员也很容易。他们理解使用 GraphQL 进行编排的力量。

3K20

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

进行安全测试期间,测试人员可以利用流量恢复API资产来更全面地了解API的工作方式,以及对不同类型的数据和请求的处理。这个过程有助于发现API资产中隐藏的安全漏洞和风险。...GraphQL最常见的是通过 HTTP 来发送请求,那么如何通过 HTTP 来进行 GraphQL 通信呢?举个栗子,如何通过Get/Post方式来执行下面的GraphQL查询呢?...正确返回{ "data": { ... }}# 执行时发生错误{ "errors": [ ... ]}使用场景:比较复杂的数据查询和获取、需要从多个平台进行数据查询集成、前后端分离模式下,需灵活开发...在获取过滤后的流量后,将根据协议类型HTTP、Dubbo、GRPC等协议类型进行完整包解析,对于复杂的参数结构,JSON、XML和各种复杂编码,则使用各种解析引擎进行解析。...比如,进行查询操作时,请求必定带有”query“字段。

58720

当.Net撞上BI可视化,这3种“套路”你必须知道

请确保使用的Token 具有足够权限(查看仪表板,集成设计器则需创建仪表板权限)。...这种方式需要BI系统支持GraphQL API,这样几乎所有界面操作均可通过调用API完成,例如在门户页面展开某个分类下的文档列表时,通过浏览器调试窗格就可以看到实际的GraphQL API调用。...集成的权限管理 BI仪表板因为涉及到企业核心业务数据信息,因此用户权限是关键的功能,因此对于用户权限管理也需要有不同方案进行处理,我们大家最熟悉的安全令牌来举例: 使用固定令牌集成时,相当于一个固定的用户身份查看报表内容...(2)这种方法仍然使用固定令牌进行集成,即在集成用的URL,QueryString的token参数值仍然是固定的字符串。...单点登录集成 如果业务系统有更高的安全性要求,可在业务系统登录画面,通过登录API,实现单点登录集成,并将获取的令牌放在会话变量

3.1K20

用TS+GraphQL查询SpaceX火箭发射数据

{ts,tsx} ,以便它能够搜索到所有的 TypeScript 文件进行查询声明。...我们将在列表显示这些数据,当用户点击其中一个项目时,查询 launch 来获取该火箭的更多数据。让我们在 GraphQL playground 测试第一个查询。 ?...在GraphQL Playground 中进行第一个查询 要编写我们的查询,首先需要创建一个 src/components 文件夹,然后创建 src/components/LaunchList 文件夹。...在终端执行: 1yarn codegen 在 src/generated/graphql.ts ,你将会找到定义程序所需的所有类型,以及获取 GraphQL 端点检索该数据的相应查询。...添加用户交互 现在需要添加当用户点击面板的项目时获取完整发射数据的功能。我们将在 App 组件创建一个钩子来跟踪班次 ID 并将其传递给 LaunchProfile 组件重新获取发射数据。

3K20

为什么我使用 GraphQL 而放弃 REST API?

端点接受请求体文件内容,因此,它们的参数将以 JSON 的形式在Dropbox-API-Arg请求头或 arg URL 参数传递。 JSON 在请求头中?...在查询参数传递类似offset和limit这样的值:/todos?Limit =10&offset=20获得从 20 开始的 10 个对象。...如果你不使用 Swagger,这可能意味着你需要维护专门的测试基础设施。与单元测试相比,你对集成测试(即同时测试客户端和服务器端代码)的需求会更多。...此模式的其他变体和查询也是如此:对输入进行类型检查和验证,并且基于查询GraphQL 服务器知道期望的结果形状。...有很多流行的开源项目都在使用 GraphQL:这个博客是基于静态站点生成器 Gatsby,它将 GraphQL 查询的结果转换成数据,然后呈现到 HTML 文件

2.3K30

Serverless 最佳实践之网络请求(上)

在前后端分离的背景下,GraphQL 给予了前端开发非常高的灵活性,且其 Query / Mutation 分离的方式,也很好地区分了对数据的查询和修改。...FaasJS 请求规范 在 FaasJS ,综合了 Restful、GraphQL 的优点,依照云函数的特点,形成了一套简单直观的请求规范。...其规定如下: 请求方法统一为 POST 方法 请求路径为云函数在项目中的文件路径 请求参数统一 JSON 的格式放在 Body 响应统一返回为 JSON 操作成功的响应内容被包裹在 data 字段...在 FaasJS 文件夹作为天然的隔离方式,来区分和放置不同业务下的云函数。而在映射成 API 后,这种直观也同样传递了 API 层面。...在某些有复杂查询条件的场景下,就不用担心查询条件过多达到浏览器 GET 请求长度限制的问题了。

73520

使用Flask构建简单的Web应用

单元测试与持续集成确保你的Web应用程序在各种情况下能够正常运行是至关重要的。使用单元测试和持续集成工具,pytest和Travis CI,来提高代码质量和稳定性。...GraphQL APIGraphQL是一种强大的API查询语言,允许客户端灵活地请求所需的数据。使用Graphene等库,你可以在Python轻松构建GraphQL API。...自动化测试与持续集成确保代码的质量和稳定性需要进行全面的自动化测试。结合持续集成工具,GitHub Actions或Jenkins,使测试自动运行。...集成Prometheus进行服务监控Prometheus是一款开源的服务监控系统,支持多维度的数据采集和查询。...GraphQL API: 使用Graphene等库构建灵活的GraphQL API,提供更自由的数据查询。自动化测试与持续集成集成自动化测试和持续集成,确保代码稳定性和质量。

41220
领券