资讯专栏INFORMATION COLUMN

koa2 + graphql + typescript + jwt + typeorm的nodejs

graf / 2328人阅读

最近写了一个node项目,主要使用到的技术有:

koa2  // nodejs 框架
koa-router // koa路由
graphql // 查询api
typescript // 强类型语言
jwt // 授权
typeorm  // typescript的一个orm
mysql2  // 内容数据库
mongodb  // 日志存储数据库
redis  // 服务器缓存

项目结构:

conf目录(配置项目录,包含db配置、服务启动端口配置、服务启动入口文件server.ts)
release目录(编译后目录)
src(项目主要源码目录)
    controllers(控制器)
    core(核心扩展)
    database(db连接)
    entities(mysql/mongodb的数据模型)
    middlewares(koa中间件)
    models(其他一些数据的模型)
    routes(路由)
    schema(graphql的schame)
    utils(辅助库目录)
    app.ts项目入口文件

该项目使用了koa的路由,可以同时支持普通RESTful和graphql两种类型api

目前授权使用jwt模式,为了登出,也是用了redis辅助保存用户会话信息(醉了...)

在graphql项目中,只需要后端定义好返回数据模型,前端按照自己需要的数据去查询接口,返回无冗余数据,非常简洁方便。

graphql定义及各种各样的好处就不多说了,直接看实战结果吧。

GraphQL示例

// 查询
{
  count
  articles{
    list{id,title}
    meta{page,page_size}
  }
}

// 结果
{
  "data": {
    "count": 3,
    "articles": {
      "list": [
        {
          "id": "594459f050bcc2abbbf5116ed301b002",
          "title": "Laravel 5.6 是继 5.5 之后 Laravel 官方发布002"
        },
        {
          "id": "594459f050bcc2abbbf5116ed301b003",
          "title": "Laravel 5.6 是继 5.5 之后 Laravel 官方发布003"
        },
        ...
      ],
      "meta": {
        "page": 1,
        "total": 24
      }
    }
  }
}

前端异步请求截图:

请求数据

返回结果

从结果看,返回的数据完全是按照自己的需要进行查询返回的

项目地址:https://github.com/xpioneer/k...

目前只是初版,还未完善整个工程项目,整体架构还需要调整,但可以跑通整个流程了!

欢迎star项目,也欢迎指正~~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/48869.html

相关文章

  • koa2 + graphql + typescript + jwt + typeormnodejs

    最近写了一个node项目,主要使用到的技术有: koa2 // nodejs 框架 koa-router // koa路由 graphql // 查询api typescript // 强类型语言 jwt // 授权 typeorm // typescript的一个orm mysql2 // 内容数据库 mongodb // 日志存储数据库 redis // 服务器缓存 项目结构:sh...

    Dogee 评论0 收藏0
  • 前端学习资源汇总

    摘要:建立该仓库的目的主要是整理收集学习资源,统一管理,方便随时查找。目前整合的学习资源只是前端方向的,可能会存在漏缺比较好的资源,需要慢慢的完善它,欢迎在该上补充资源或者提供宝贵的建议。 说明 平时的学习资源都比较的凌乱,看到好的资源都是直接收藏在浏览器的收藏夹中,这样其实并不方便,整理在云笔记上,也不方便查看修改记录,索性就整理在 github 上并开源出来,希望帮助大家能够更快的找到需...

    SnaiLiu 评论0 收藏0
  • 前端学习资源汇总

    摘要:建立该仓库的目的主要是整理收集学习资源,统一管理,方便随时查找。目前整合的学习资源只是前端方向的,可能会存在漏缺比较好的资源,需要慢慢的完善它,欢迎在该上补充资源或者提供宝贵的建议。 说明 平时的学习资源都比较的凌乱,看到好的资源都是直接收藏在浏览器的收藏夹中,这样其实并不方便,整理在云笔记上,也不方便查看修改记录,索性就整理在 github 上并开源出来,希望帮助大家能够更快的找到需...

    ziwenxie 评论0 收藏0
  • 使用nodejs-koa2-mysql-sequelize-jwt 实现项目api接口

    摘要:具体可以看项目主要几个文件代码,一起学习进步,如果你有什么好的建议或意见,或如有错误恳请指导,请留言,谢谢学习推荐链接实现认证作者日暮途远基于框架的服务构建之用户管理设计如果对你学习有帮助,请给个星星谢谢 nodejs-koa2-mysql-sequelize-jwt 技术栈:nodejs, koa2, mysql, sequelize, jwt 项目数据层和操作层分明 使用koa2...

    kohoh_ 评论0 收藏0
  • 平时积累前端资源,持续更新中。。。

    本文收集学习过程中使用到的资源。 持续更新中…… 项目地址 https://github.com/abc-club/f... 目录 vue react react-native Weex typescript Taro nodejs 常用库 css js es6 移动端 微信公众号 小程序 webpack GraphQL 性能与监控 高质文章 趋势 动效 数据结构与算法 js core 代码规范...

    acrazing 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<