首页
学习
活动
专区
圈层
工具
发布

英国卫报基于 Serverless、React 和 GraphQL 构建内容协作工具 Pinboard

该解决方案使用了一系列技术,包括用于编写业务逻辑的 Typescript、用于执行代码的无服务器服务、API 端点和 GraphQL 服务器,以及用于存储的 AWS RDS(PostgreSQL)。...它使用 Apollo 作为 GraphQL 客户端库。在服务器端,使用 AWS Lambda 执行所有业务逻辑,使用 AWS RDS for PostgreSQL 存储用户和项目数据。...Pinboard 的架构(来源:卫报工程博客) Pinboard 的架构在很大程度上依赖于无服务器组件,Lambda 函数充当了各种不同的角色,包括为嵌入到编辑工具中的客户端应用提供服务、提供 AppSync...Pinboard 使用 GraphQL 获取和聚合来自多个数据源的数据,避免编写自定义数据聚合层,并充当 API 的适配器门面。...AppSync 支持所有这三种 GraphQL 操作类型,并提供了定义订阅服务器端过滤器和订阅失效的能力。它还支持 Pub/Sub API,支持通过 WebSocket 进行 异步消息传递。

67910

2018年微服务的5个发展趋势

从REST移到GraphQL。 由Facebook于2012年创建,并于2015年开源,GraphQL是一种API规范,它是查询语言和用于履行查询的运行时。...通通过在类型和字段之间定义资源之间的关系(而不是像REST一样的端点),GraphQL可以遵循属性之间的引用,因此服务可以使用单个查询从多个资源中接收数据。...查询的形状完全匹配从服务器获取的数据的形状,这使得与SQL或Gremlin等其他语言相比,GraphQL非常高效。查询反映了响应的形状,因此可以检测到偏差,并可以识别出不能正确解析的字段。...该规范最著名的是支持外部api,但我们发现它也被用于内部api。...GraphQL用户包括Amplitude,Credit Karma,KLM,NY Times,Twitch,Yelp等.11月,亚马逊通过推出AWS AppSync(包括GraphQL支持)来验证GraphQL

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    提高 API 性能的 5 大常见方法

    异步日志记录 这种方法涉及将日志发送到无锁缓冲区并立即返回,而不是在每次调用时处理磁盘。日志会定期刷新到磁盘,从而显著减少 I/O 开销。 数据缓存 经常访问的数据可以存储在缓存中以加快检索速度。...REST API 与 GraphQL 在 API 设计方面,REST 和 GraphQL 各有优缺点。...REST API 使用 GET、POST、PUT、DELETE 等标准 HTTP 方法进行 CRUD作。 当您需要在单独的服务/应用程序之间建立简单、统一的接口时,效果很好。 缓存策略易于实现。...登录凭据将发送到身份服务。 身份验证成功后,将颁发并返回 JWT 令牌。 前端使用 Authorization 标头中的 JWT 进行 API 调用。...API 层 API Gateway 和 AppSync 公开了具有内置安全性和限制功能的 REST 和 GraphQL API。

    31200

    如何在纯 JavaScript 中使用 GraphQL

    在这篇教程中,我想采用一种不一样的方法,并向你展示从 Node 和客户端 JavaScript(不带库)调用 GraphQL API 实际上有多么容易。...node-fetch 库从 Node 中的浏览器实现 JavaScript fetch API。这样我们就可以丢弃大约 11 行代码(减少了 25%),同时还让代码更容易阅读了。...需要强调的是,如果你的 API 需要传递某种 API 密钥或凭据,那么你不会希望在客户端执行这一操作,因为你的凭据将被公开。...更好的解决方案是调用一个可访问这些凭据的无服务器函数,然后为你调用 API 并返回结果。如果你的无服务器函数是用 JavaScript 编写的,则前面示例中的 Node 代码就会起作用。...但是,对于研究 GraphQL 的人们来说(尤其是将其与 REST 对比时),很重要的一点是使用 GraphQL 显然不需要任何外部依赖项。

    4.5K10

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

    避免过度获取或获取不足 过度获取意味着获取的信息超过了你的需要。这在使用 REST 时非常常见,因为它总是从给定的端点返回固定的数据集,而客户端实际上具有特定的数据需求。...但在使用 GraphQL 时,你可以使用查询语法定义所需信息的结构,然后通过单个 API 请求就可以获取所需的信息。...上述操作的信息来源如下: 书名、出版年份、ISBN、作者姓名、作者国籍——从数据库获取; 平均评分和评分计数——通过 ISBN 查询 Google Books API。...现在添加一个 HTTP 客户端,用于从 Google Books API 获取所需的数据。你需要导入 ballerina/http 模块,并按照如下方式创建客户端。...今日好文推荐 开源大佬从谷歌离职:在 Go 语言项目上停滞不前,要去更小的企业寻求变革 这群 WebAssembly 大佬创业失败了:有时从 JS 迁移到 Wasm 并不值当?

    3.6K20

    GraphQL

    先看REST API的做法: REST API获取数据 再来看GraphQL是怎么做的: GraphQL获取数据 可以看出其中的区别: 与REST多个endpoint不同,每一个的 GraphQL 服务其实对外只提供了一个用于调用内部接口的端点...例如定义了一个名为User的对象类型,并对其字段进行定义和施加限制条件: User字段控制 那么,返回数据时,像下面这种情况就是不允许的: 错误的表示 Graphql会根据Schema Type来自动返回正确的数据...Tipe (github): 一个 SaaS(软件即服务)内容管理系统,允许你使用强大的编辑工具创建你 的内容,并通过 GraphQL 或 REST API 从任何地方访问它。...AWS AppSync:完全托管的 GraphQL 服务,包含实时订阅、离线编程和同步、企业级安全特性以及细粒度的授权控制。...你会在你下一个项目中引入Graphql并使用它吗? 你对Graphql还有什么疑惑的问题呢?

    3.2K65

    GraphQL与传统API对比介绍教程

    传统API(REST)REST(Representational State Transfer)是一种软件架构风格,广泛应用于网络服务。...单一端点:所有查询通过一个端点完成,简化了API设计。强类型系统:提供了明确的类型定义和验证,减少了错误发生的可能。缺点:复杂性增加:GraphQL查询语言和架构需要一定的学习成本。...详细对比数据获取方式REST:每个URL代表一个资源,客户端请求一个资源时,服务器返回整个资源对象。GraphQL:客户端可以定义查询,精确获取所需字段,避免冗余数据传输。...GraphQL:可以在一次请求中获取所有相关数据,但复杂查询可能增加服务器负担。...REST简单直观,适合传统的CRUD操作和简单的API设计。而GraphQL提供了更高的灵活性和精确的数据获取能力,适合复杂的前端应用和需要减少网络请求的场景。

    73910

    我为什么要放弃RESTful,选择拥抱GraphQL

    先看REST API的做法: REST API获取数据 再来看GraphQL是怎么做的: GraphQL获取数据 可以看出其中的区别: 与REST多个endpoint不同,每一个的 GraphQL...例如定义了一个名为User的对象类型,并对其字段进行定义和施加限制条件: User字段控制 那么,返回数据时,像下面这种情况就是不允许的: 错误的表示 Graphql会根据Schema Type来自动返回正确的数据...Tipe (github): 一个 SaaS(软件即服务)内容管理系统,允许你使用强大的编辑工具创建你 的内容,并通过 GraphQL 或 REST API 从任何地方访问它。...AWS AppSync:完全托管的 GraphQL 服务,包含实时订阅、离线编程和同步、企业级安全特性以及细粒度的授权控制。...你会在你下一个项目中引入Graphql并使用它吗? 你对Graphql还有什么疑惑的问题呢?

    3K40

    GraphQL详解

    先看REST API的做法: REST API获取数据 再来看GraphQL是怎么做的: GraphQL获取数据 可以看出其中的区别: 与REST多个endpoint不同,每一个的 GraphQL 服务其实对外只提供了一个用于调用内部接口的端点...Endpoints对比 REST API's Endpoints GraphQL 实际上将多个 HTTP 请求聚合成了一个请求,将多个 restful 请求的资源变成了一个从根资源 POST 访问其他资源的...例如定义了一个名为User的对象类型,并对其字段进行定义和施加限制条件: User字段控制 那么,返回数据时,像下面这种情况就是不允许的: 错误的表示 Graphql会根据Schema Type来自动返回正确的数据...Tipe (github): 一个 SaaS(软件即服务)内容管理系统,允许你使用强大的编辑工具创建你 的内容,并通过 GraphQL 或 REST API 从任何地方访问它。...AWS AppSync:完全托管的 GraphQL 服务,包含实时订阅、离线编程和同步、企业级安全特性以及细粒度的授权控制。

    3.2K00

    俄黑客战术转向:利用设备配置错误而非漏洞

    亚马逊威胁情报警告:俄罗斯GRU黑客如今青睐配置错误的设备而非漏洞严重性:中等类型:安全新闻亚马逊威胁情报报告称,与俄罗斯GRU有关联的黑客正在改变其战术,从利用软件漏洞转向攻击配置错误的设备。...此类错误配置可能包括暴露的管理界面、默认凭据或保护不当的网络服务。该威胁被评估为中等严重性,因为其影响程度中等,且无需复杂的零日漏洞即可相对容易地加以利用。...技术摘要亚马逊威胁情报的最新情报强调,俄罗斯GRU黑客做出了战略转变,如今更倾向于利用配置错误的设备,而非传统的软件漏洞。...这种变化反映了对不断演变的网络安全环境的适应,在补丁和漏洞管理已得到改进的背景下,获取和有效利用零日漏洞利用变得更加困难。...相反,攻击者正专注于配置不当的设备,例如那些使用默认或弱凭据、暴露了管理界面或未受保护网络服务的设备。这些错误配置为攻击者提供了更容易的入口点,无需复杂的漏洞利用开发。

    17600

    为什么我劝你放弃了Restful API?

    GraphQL本质上是一种基于api的查询语言,现在大多数应用程序都需要从服务器中获取数据,这些数据存储可能存储在数据库中,API的职责是提供与应用程序需求相匹配的存储数据的接口。...REST API 的接口灵活性差、接口操作流程繁琐,GraphQL 的声明式数据获取,使得接口数据精确返回,数据查询流程简洁,照顾了客户端的灵活性。...,从原有的分散式请求变成了集中式的请求,因此GraphQL又可以被看成是图数据库的形式。...Tipe (github): 一个 SaaS(软件即服务)内容管理系统,允许你使用强大的编辑工具创建你 的内容,并通过 GraphQL 或 REST API 从任何地方访问它。...AWS AppSync:完全托管的 GraphQL 服务,包含实时订阅、离线编程和同步、企业级安全特性以及细粒度的授权控制。

    3.8K20

    架构师该如何为应用选择合适的API

    2012年,GraphQL由Facebook内部开发,2015年公开公布。2018年11月7日,Facebook将GraphQL项目转移到新成立的GraphQL基金会 。...如上图的例子,用户通过RESTFul的API来请求数据,需要两个GET请求,先获取Assets,再通过AssetID获取comments。...除了灵活性这个最大的优点外,GraphQL还有以下的优点: 声明性的数据获取,避免了客户端和服务器端的额外交互 优秀的开发体验,不需要版本控制,因为引入新的字段不会影响到API查询。...强类型的GraphQL模式使得代码可预测,并及早发现错误。 当然,GraphQL也不是没有缺点: 使用GraphQL,如果您需要查找有关列表或记录集合的信息,则处理起来会很棘手。...很难缓存,缓存API响应的目的主要是为了更快地从将来的请求中获取响应。与GraphQL不同,RESTful API可以利用HTTP规范中内置的缓存。

    2.2K20

    GraphQL到底怎么使?看看智联前端团队技术沉淀

    初识 GraphQL 的实现能让客户端获取以结构化的方式,从服务端结构化定义的数据中只获取想要的部分的能力。 符合 GraphQL 规范的实现我称之为 GraphQL 引擎。...这里的服务端不仅指网络服务,用 GraphQL 作为中间层数据引擎提供本地数据的获取也是可行的,GraphQL 规范并没有对数据源和获取方式加以限制。...利弊 对 GraphQL 的直观印象就是按需、无冗余,这是显而易见的好处,那么在实际应用中真的这么直观美好么?...无冗余:按需返回数据,在网络性能上确实有一定优化。 文档化:GraphQL 的内省功能可以根据 Schema 生成实时更新的 API 文档,且没有维护成本,对于调用方直观且准确。...强类型(字段校验):由于 JS 语言特性,强类型只能称为字段强类型校验(包括入参类型和返回结果),当数据源返回了比 Schema 多或少的字段时,并不会引发错误,而就算采用了 TypeScript 由于没有运行时校验

    2.9K20

    第66篇:顶级APT后门Sunburst通信流量全过程复盘分析(修正篇)

    首先,Sunburst后门发起了ea99hr2sfen95nkjlc5g.appsync-api.eu-west-1.avsvmcloud.com的dga域名请求,C2服务端的攻击者打算让这个后门永久停止退出...第2步 2020-06-11 05:00 UTC Sunburst发起查询:ulfmcf44qd58t9e82w.appsync-api.us-west-2.avsvmcloud.com ⇒ AD 域...第3步 2020-06-11 06:00 UTC Sunburst发起查询:p50jllhvhmoti8mpbf6p2di.appsync-api.us-west-2.avsvmcloud.com ⇒...5. dga域名解析的ip地址段,选用的是微软、谷歌、亚马逊的地址段,很容易直接就被检测软件加入白名单,整个通信流量看起来都是正常流量,难以甄别。 6....Sunburst后门所使用的的dga域名appsync-api.us-west-2.avsvmcloud.com很好地迷惑了安全人员的溯源,使其误以为是AWS旗下域名。 7.

    98320

    “别更新了,学不动了” 之:全栈开发者 2019 应该学些什么?

    REST 与 GraphQL RESTful API 在 2019 年还会存在,你需要学习如何实现和设计这些 API。...这将是 2019 年最重要的趋势:不是如何单独使用 GraphQL,而是如何在极少数情况下使用 GraphQL 优化一些 RESTful API 路由。...学习这两个工具,但请记住,CLI 在项目开始时帮你消除掉最初 80%的复杂性。如果要发布 NPM 包,请使用 Rollup。...AppSync、Amplify、App Services、App Engine 等服务将继续发展,但由于程序员很难放弃如此多的控制权(除非是小型的个人项目),所以它们并不会真正有大起色。...你应该学会在未来的项目中使用其中一些(不用担心,它们使用起来没有那么难,就像使用大多数其他 API 一样)。

    3.5K30

    2020年AWS,Microsoft和Google应进行的云收购

    亚马逊网络服务:Auth0和Algolia AWS的主要弱点是它的复杂性。它的云平台包含许多不同的服务,可以完成许多不同的事情。...而且,由于构建这些服务的团队都是相对独立的,因此即使他们已经精通该平台的另一部分,当他们使用新的AWS工具时,用户通常也面临着重大的学习曲线。 亚马逊已经做出了一些努力来解决这个问题。...但是,Microsoft在无服务器方面不够积极,仅提供一些容器编排和功能即服务的支持。 Netlify实际上是不属于Google或Amazon的唯一独立的无服务器/ API经济平台。...这种弱点增强了Google在忽略客户反馈并让项目枯竭方面的声誉。...因此,Google应该购买Hasura,它在Firebase落后的地方正拥有惊人的发展速度:对关系数据库,GraphQL的支持以及在开发者反馈的帮助下快速迭代的机会。

    8.7K20

    什么是REST API

    REST API示例 在你的浏览器中打开以下链接,从Open Trivia Database[3]中请求一个随机的计算机问题: https://opentdb.com/api.php?...id=123 所有这些都是为用户123获取数据的有效选项。当你有更复杂的操作时,组合的数量会进一步增加。 归根结底,你如何格式化URL并不重要,但整个API的一致性很重要。...REST的难题导致Facebook创建了GraphQL--一种网络服务查询语言。把它看作是网络服务的SQL:一个单一的请求定义了你所需要的数据以及你希望它如何返回。...你的客户不太可能有与Facebook类似的问题,所以一旦RESTful API发展到超出其实际限制时,GraphQL可能值得考虑。...分类列表包括: Any API[23] API list[24] Public APIs[25] Google APIs Explorer[26] 在实现你自己的网络服务之前,在你自己的项目中尝试使用一些

    6K20

    RPC vs REST vs GraphQL

    因此在这段学习GraphQL的过程中,并且也尝试使用它以全栈的角度做了一个小项目,在这个过程中,一直在思考它对比前两者在API设计的整体架构体系中的各个指标上,孰优孰劣。...当然,这些内容如果分开来讲,每一块内容所涉及的东西都够写一本书了,这里仅仅是简单归纳和整理,从宏观的角度来对比它们的异同,从而能够在日后面临技术选型时,有一个更佳明确的决策方向。...优点 网络开销低,可以在单一请求中获取REST中使用多条请求获取的资源 强类型Schema(约束意味着可以根据规范形成文档、IDE、错误提示等生态工具) 特别适合图状数据结构的业务场景(比如好友、流程、...另外一方面是GraphQL的使用场景相当灵活,在我自己的调研项目中,我是把它当做一个类似ORM的框架来使用的,在别人的一些文章中,会把它当做一个中间层来做渐进式开发和系统升级。...最后引用人月神话中的观点no silver bullet,在技术选型时需要具体情况具体分析,不过鉴于GraphQL的灵活性,把它与RPC和REST配置使用,也是不错的选择。

    2.1K21

    Agent Toolkit大揭秘:Python实现智能体调用外部API的5种方案

    比如,当你使用 GET 方法访问一个 URL 时,通常是在请求获取某个资源的数据,就像从图书馆的书架上拿走一本书。而 POST 方法则常用于向服务器提交新的数据,比如向网站发布一篇新文章。...这种方式在数据获取的效率和灵活性上有很大优势,特别是在复杂的数据需求场景下。像 Facebook 就大量使用了 GraphQL API。...如果是,说明我们成功获取到了数据;否则,打印出错误状态码。...我们以一个假设的博客 GraphQL API 为例,获取特定文章及其作者信息。...错误处理:API 调用过程中可能会遇到各种错误,如网络错误、权限错误、服务器错误等。一定要编写完善的错误处理代码,以便在出现问题时能够及时发现并解决。

    2.1K10
    领券