美文网首页IT@程序员猿媛
使用Nest搭建GraphQL服务

使用Nest搭建GraphQL服务

作者: 敬亭阁主 | 来源:发表于2020-05-23 10:25 被阅读0次

    快速开始

    Nest是Nodejs的一个重要实现,它实现了一套类似SpringBoot的MVC框架结构,支持注释和自动注入等编程方法,使用Typescript的强类型来提供可靠的开发体验。

    GraphQL的出现使得对于服务API的设计进入到了和数据库设计一样的水平,通过精心设计的schema,可以长期保证服务的稳定和可用性,同时又不会限制后台服务逻辑的升级。

    此次采用Nest作为服务环境来搭建一个GraphQL服务脚手架,能够满足基本业务需求场景,方便在此基础上进行二次开发。

    预设的业务需求场景包括以下内容:

    1. 简单查询、关联查询,增删改操作
    2. 循环依赖关系的Module定义
    3. 访问控制管理,增加角色定义,可对指定操作按角色进行控制
    4. 查询分页功能
    5. ...

    依赖

    Nest本身只是提供了对Apollo GraphQL Server的封装,因此底层还是需要安装apollo-server

    "dependencies": {
      "@nestjs/common": "^7.0.1",
      "@nestjs/core": "^7.0.1",
      "@nestjs/graphql": "^7.3.9",
      "@nestjs/platform-express": "^7.0.1",
      "apollo-server": "^2.13.1",
      "apollo-server-express": "^2.13.1",
      "class-transformer": "^0.2.3",
      "class-validator": "^0.12.2",
      "graphql": "^15.0.0",
      "graphql-tools": "^5.0.0",
      "reflect-metadata": "^0.1.13",
      "rimraf": "^3.0.2",
      "rxjs": "^6.5.4"
    },
    "devDependencies": {
      "@nestjs/cli": "^7.0.0",
      "@nestjs/schematics": "^7.0.0",
      "@nestjs/testing": "^7.0.1",
      "@types/express": "^4.17.3",
      "@types/jest": "^25.1.4",
      "@types/node": "^13.9.1",
      "@types/supertest": "^2.0.8",
      "@typescript-eslint/eslint-plugin": "^2.23.0",
      "@typescript-eslint/parser": "^2.23.0",
      "eslint": "^6.8.0",
      "eslint-config-prettier": "^6.10.0",
      "eslint-plugin-import": "^2.20.1",
      "jest": "^25.1.0",
      "prettier": "^1.19.1",
      "supertest": "^4.0.2",
      "ts-jest": "^25.2.1",
      "ts-loader": "^6.2.1",
      "ts-node": "^8.6.2",
      "tsconfig-paths": "^3.9.0",
      "typescript": "^3.8.3"
    },
    

    示例

    采用Nest官方示例进行扩展,该示例中有两个对象:authorpost,类型定义如下:

    type Author {
      id: Int!
      firstName: String
      lastName: String
      posts: [Post!]!
    }
    
    type Post {
      id: Int!
      title: String!
      author: Author!
      votes: Int
    }
    

    下载

    可以在码云上获取本示例全部源码

    git clone https://gitee.com/apollozhu/demo.graphql.starter.git
    

    截图

    image.png

    更详细的系列文章可以参考 这里

    相关文章

      网友评论

        本文标题:使用Nest搭建GraphQL服务

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