BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

微服务查询语言restQL已在GitHub上发布

| 作者 Thomas Betts 关注 7 他的粉丝 ,译者 宋康婧 关注 0 他的粉丝 发布于 2018年1月16日. 估计阅读时间: 3 分钟 | QCon北京2018全面起航:开启与Netflix、微软、ThoughtWorks等公司的技术创新之路!

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

微服务查询语言restQL已经成为了一个开源项目,使用MIT开源许可。restQL语言旨在简化客户端访问RESTful微服务的常用场景,包括并行调用和链式调用。由拉丁美洲最大的电子商务公司B2W开发的restQL,是为了避免FalcorGraphQL这两个更为人熟知的数据查询和管理框架的一些限制而诞生的。

Falcor仅适用于使用JavaScript的客户端,而restQL对于任何支持HTTP REST调用的客户端都适用。这意味着restQL也能适用于使用Swift和Java编写的移动应用。尽管GraphQL现在已经是一种成熟的数据查询语言,但是它不支持一些对RESTful服务来说简单或约定俗成的特性,比如HTTP响应状态码或者本地浏览器缓存。

与其他查询语言类似,restQL语句描述了要获取的资源,并用参数进行过滤。比如:

  from hero             
            with  
        name = "Restman"

默认情况下,查询是并行执行的,无须任何特殊语法。对于更复杂也更常见的场景,比如链式调用或者多路复用调用(如下例所示)也非常清晰直观。

  from hero
            with
                name = "Restman"
        from sidekick
            with
                hero = hero.id

对restQL查询的解析和响应由restQL服务端处理。restQL服务端是用Clojure实现的,它充当着提交restQL查询的客户端和后端APIs之间的桥梁。所有的配置信息都是存在服务端的,以匹配资源名称和相应的调用端点(endpoint)。由于restQL服务端开放了标准的REST调用端点,所以不需要专门处理的客户端。

在一篇声明restQL的博客文章中,B2W Digital的IT经理,同时也是restQL的作者之一的Ricardo Mayerhofer提到,这个项目是在公司向微服务迁移的过程中诞生的。开发团队很快从向微服务的迁移中受益,因为应用程序变得更小,相应的维护也更简单。但是,前端代码变得更加复杂了,因为需要向多个微服务发送请求,而不是像以前那样只用向一个整体的服务发送一个请求。Ricardo总结了他们的经验:“基于微服务的架构并不是什么银弹。尽管能给服务端团队带来直接的好处,但是它的特性给使用者带来了复杂性和性能方面的挑战。”在参考了Falcor和GraphQL后,restQL诞生了,并被证明有助于简化客户端对大量后端服务的访问。

你可以在项目主页http://restql.b2w.io/上找到更多关于restQL的信息。源代码则在GitHub上。

查看英文原文:restQL, a Microservices Query Language, Released on GitHub

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT