美文网首页kankan(good)
731.【门户网站】数据接口规范选型:graphql 与 res

731.【门户网站】数据接口规范选型:graphql 与 res

作者: 七镜 | 来源:发表于2023-07-14 23:32 被阅读0次

graphql 和 restful 两种不同的 web API 设计风格的优缺点。七镜将从以下几个方面进行比较:

  • 数据获取效率
  • 数据一致性
  • 开发复杂度
  • 安全性

一、数据获取效率

graphql 的一个显著优势是它可以让客户端按需获取数据,而不需要多次请求或者获取冗余的数据。这样可以减少网络开销和提高用户体验。例如,如果我们想要获取一个用户的姓名、邮箱和他最喜欢的电影的标题,我们可以用 graphql 这样写:

query {
  user(id: 1) {
    name
    email
    favoriteMovie {
      title
    }
  }
}

而如果我们用 restful 风格的 API,我们可能需要先请求用户的基本信息,然后再根据用户的 favoriteMovieId 请求电影的信息,或者一次性请求用户和电影的所有信息,但是可能会包含很多我们不需要的字段。这样就会增加请求次数或者数据量,降低效率。

二、数据一致性

restful 风格的 API 通常遵循一些通用的设计原则,例如使用 HTTP 方法来表示操作,使用状态码来表示结果,使用 URL 来表示资源等。这样可以让不同的开发者和客户端更容易理解和使用 API。而 graphql 则没有这样的约束,它允许开发者自由地定义查询和变更语言,以及返回的数据结构。这样可以提供更大的灵活性和定制性,但是也可能导致不一致和混乱。

二、开发复杂度

graphql 的另一个优势是它提供了一个强类型的 schema 系统,可以定义 API 的输入和输出类型,以及它们之间的关系。这样可以让开发者在编写和测试 API 时有更多的信心和提示,也可以让客户端利用一些工具来自动生成查询代码和文档。而 restful 风格的 API 则没有这样的机制,开发者需要手动编写和维护文档和代码,或者使用一些第三方的规范和工具来辅助。

三、安全性

graphql 和 restful 风格的 API 在安全性方面没有本质的差别,它们都需要使用一些技术和策略来保护 API 的访问权限和数据的完整性。例如,它们都可以使用 HTTPS 来加密传输数据,使用身份验证和授权机制来限制用户的操作范围,使用防火墙和速率限制来防止恶意攻击等。不过,由于 graphql 可以让客户端自由地组合查询和变更,所以它可能会面临一些特殊的安全风险,例如深度攻击(deep query attack)或者批量攻击(batching attack),这就需要开发者在设计和实现 API 时做一些额外的考虑和处理。

四、总结

graphql 和 restful 风格的 API 都有各自的优缺点,没有绝对的好坏之分。开发者应该根据自己的业务需求和技术背景来选择合适的方案,并且遵循一些最佳实践来提高 API 的质量和可维护性。

相关文章

  • GraphQL图形可视化

    GraphQL——由Facebook创建的接口规范,用于API的查询,为前后端数据交互提供了新的查询方式。 一、R...

  • RESTFul API规范,看这篇就够了

    初尝RESTFul规范 RESTFul是一种HTTP API接口规范,只要满足的RESTFul规范,即可称为RES...

  • 搜索技术 Solr 入门详解

    一、介绍 企业站内搜索技术选型 在一些大型门户网站、电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现...

  • ins帖子数结构梳理

    关于抽取帖子中的图片 一、数据接口 接口1[https://www.instagram.com/graphql/q...

  • react数据交互

    ch('url接口地址',{配置信息).then(res=>{return res.json() //将数据转换成...

  • angular练习

    api接口文档res。返回的数据,就是json数据的中心。把res展示到页面中只要把数据绑定到模型中($scope...

  • graphql-java: 使用文档

    欢迎使用 graphql-java 这是一个用Java实现的GraphQL。基于GraphQL规范和JavaScr...

  • 2019-10-14 SpringMVC与Servlet接口 S

    SpringMVC与Servlet接口 Servlet接口规范 Servlet 接口 定义servlet接口规范i...

  • 数据导入和导出

    本文属使用Prisma构建GraphQL服务系列。 Prisma使用专用的中间格式导入和导出数据:规范化数据格式(...

  • 2PC&&3PC

    XA规范 XA 就是 X/Open DTP 定义的交易中间件与数据库之间的接口规范(即接口函数),交易中间件用它来...

网友评论

    本文标题:731.【门户网站】数据接口规范选型:graphql 与 res

    本文链接:https://www.haomeiwen.com/subject/wesbudtx.html