CTO事件簿中,突然使用GraphQL实现FrontendServer

阅读即可理解的事情

能理解微服务的外观,前端服务器和GraphQL的大致框架。

目录

    1. 微服务是什么?

 

    1. 前端服务器是什么?

 

    1. GraphQL是什么?

 

    1. FiNC架构

 

    未来展望

1. FiNC和微服务

请参考以下内容,FiNC采用了MicroService。

我认为从去年开始,我们开始策划微服务Meetup并且活跃了FiNC内部的活动。在后端领域也展现出相当的热情。

这个聚会上经常会讨论的一个话题是Frontend Server。
当服务变得越来越多时,客户端不知道该调用哪个API,会造成调用多个请求并且效率低下,引发争论。

2. 前端服务器

解决上述问题的是FrontendServer。
Backend服务器是按照Rest的设计构建的,当客户端请求FrontendServer时,它会返回与视图对应的数据,非常优秀。

図1.png

目前,FiNC正在引入其应用程序的功能。FiNC采用了GraphQL等框架。

3. GraphQL是什么?

请参考官方网站(http://graphql.org/learn/)

GraphQL是一种用于API的查询语言,它是在服务器端运行时使用所定义的类型系统来执行查询的。GraphQL不与特定的数据库或存储引擎相关联,而是基于现有的代码和数据。GraphQL服务是通过定义这些类型的类型和字段,并为每个类型的每个字段提供函数来创建的。例如,GraphQL服务可以表示登录用户为(我)并显示该用户的名称。

type User {
  id: ID
  name: String
}

type Query {
  me: User
}

通过定义方式来获取用户的名称时,只需从客户端发出查询即可将数据输出出来。对应的返回值如下所示。

{
  me: {
    name: "Mitsunori Nanno"
  }
}

以下为客户端的查询

{
  me {
    name
  }
}

4. 針對FiNC的架構。

使用Node、GraphQL和koa进行构建。
构建步骤如下所示。

npm install apollo-server body-parser express graphql graphql-tools

相当简单。
从这里开始,将各个服务的API通过InternalAPI合并并返回给Client。

由于Query是由生成器(generater)创建在GraphQL服务端上的,所以任何人都可以相当轻松地创建。

5. 未来

因为每个服务的API的响应都是通过JsonSchema定义的,所以连接GraphQL和API的部分工作量是多余的。如果能够创建一个可以自动生成GraphQL代码的生成器,并且能够自动添加JsonSchema,那将非常好。

我想考虑如何在明年构建FrontendServer而不浪费时间。

广告
将在 10 秒后关闭
bannerAds