首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端开发使用GraphQL——Nestjs/GraphQL项目搭建

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

原创
作者头像
easonxie
修改2021-06-15 00:09:56
1.6K0
修改2021-06-15 00:09:56
举报

选型决定了使用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 引入winston
main.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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 一、传递cookie,header, url参数
  • 二、引入winston日志服务
  • 三、封装调用后台服务的模块
  • 四、小结
相关产品与服务
日志服务
日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档