前端开发使用GraphQL——Nestjs/GraphQL项目搭建

2021-06-15 00:09:56 浏览数 (1)

选型决定了使用Nestjs来开发GraphQL应用,查了一下资料发现网上typescript搭建GraphQL的教程非常的少。自己踩了不少坑搭建的服务已经上线了,这里记录下我使用Nestjs搭建GraphQL应用的过程,首先是Nestjs项目的搭建。

1. 前端开发使用GraphQL——服务端技术选型

背景

nestjs官方有很完善的官方文档,看文档已经可以解决很多问题了,但是官方提供前端代码框架可以给我们即开即用,这里我在官方文档的基础上,增加了一些配置,让项目的代码符合我的需求,聚合已有的后台接口。

一、传递cookie,header, url参数

目前我使用GraphQL操作数据的service实际上都是调用的后台的接口,后台的接口是需要验证用户的登录态,请求的来源(IOS还是安卓,APP内还是APP外,APP的版本是什么)。这就需要把用户发起的请求的cookie和header, url参数等内容透传给后台。目前Nestjs的GraphQL模块还没法直接注入这些请求的信息。我们需要写一个service服务来提供这些内容。

添加sessionService添加sessionService

二、引入winston日志服务

服务在服务端运行的时候,打印的一些日志需要记录下来,方便查问题,本地使用的时候,只需要使用console。在服务端使用的时候,还是使用winston等成熟的日志组件,打印下来日志文件,方便查问题。

main.ts 引入winstonmain.ts 引入winston

在main.ts里面引入winston的logger,替换掉nest的Logger模块的默认行为,其他地方还是可以正常的注入nest的Logger模块,Nest会使用winston去处理日志的打印请求。具体可以参考nest-winston

三、封装调用后台服务的模块

目前暂时我们还是使用http去调用后台的服务,实际调用的时候,需要先获取调用的后台模块的IP与端口,然后调用完成了还需要做模调上报,记录调用是否成功。调用后台服务也需要把客户的cookie header 等信息传递给后台。nest默认提供httpService,是一个封装好了的axios服务。我们需要在这个服务的基础上做一点封装。

封装组件请求后台封装组件请求后台

四、小结

目前基本解决了GraphQL聚合后台请求需要解决的问题,相关代码提交到了我的github上,有兴趣的小伙伴可以去拉取代码自己运行一编。如果我的文章对你有帮助,欢迎在评论区一起交流~

github传送门: https://github.com/xyc-cn/nestjs-graphql-demo

0 人点赞