Skip to content
/ core Public

😎 The next generation of RESTful API service and more feature for Mix Space, powered by @nestjs.

License

Notifications You must be signed in to change notification settings

mx-space/core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

36e8450 · Sep 22, 2021
Sep 13, 2021
Aug 30, 2021
Sep 19, 2021
Sep 18, 2021
Sep 6, 2021
Sep 10, 2021
Sep 22, 2021
Sep 22, 2021
Sep 21, 2021
Sep 18, 2021
Sep 9, 2021
Sep 10, 2021
Aug 31, 2021
Sep 22, 2021
Sep 10, 2021
Sep 22, 2021
Sep 19, 2021
Aug 30, 2021
Aug 30, 2021
Sep 11, 2021
Sep 8, 2021
Sep 7, 2021
Sep 13, 2021
Sep 8, 2021
Sep 22, 2021
Sep 9, 2021
Sep 21, 2021
Sep 10, 2021
Sep 18, 2021
Jul 14, 2021
Sep 20, 2021
Aug 30, 2021

Repository files navigation

MServer Next

GitHub stars GitHub issues GitHub Workflow Status GitHub license wakatime

RESTful API service & GraphQL for Mix Space, powered by nestjs, required mongoDB & Redis.

适用于 Mix Space 的 RESTful API & GraphQL 服务端应用;基于 nestjs (nodejs),需安装 mongoDBRedis 方可完整运行。

v3 还是使用 nestjs 进行重构,之前的版本在 此仓库

配合相关项目一起使用:

  • SSR Blog:
    • Kami powered by NextJS (一个走可爱风路线的个人空间)
    • 未来会变多吗
  • Admin: Admin
  • 未来可期

接口文档通过开发环境 Swagger 查阅,接口大概有 120+ 个

快速开始

需要以下环境:

  • Node.js 16.10+
  • MongoDB
  • Redis

使用构建好的版本你的系统必须是 Linux (test on Ubuntu 18, Ubuntu 20, CentOS 8)

curl https://cdn.jsdelivr.net/gh/mx-space/server-next@master/scripts/download-latest-asset.js >> download.js
zx ./download.js
cd mx-server
node index.js

或者手动下载 release,之后解压然后

node index.js

所有的依赖都打包进了文件无需 node_modules

项目结构

.
├── app.config.ts                 # 主程序配置,数据库、程序、第三方,一切可配置项
├── app.controller.ts             # 主程序根控制器
├── app.module.ts                 # 主程序根模块,负责各业务模块的聚合
├── app.resolver.ts               # 主程序根 GraphQL Resolver
├── common                        # 存放中间件
│   ├── adapt                     # Fastify 适配器的配置
│   ├── decorator                 # 业务装饰器
│   ├── exceptions                # 自定义异常
│   ├── filters                   # 异常处理器
│   ├── guard                     # 守卫与鉴权
│   ├── interceptors              # 拦截器, 数据过滤与响应格式化处理
│   ├── middlewares               # 传统意义上的中间件
│   └── pipes                     # 管道
├── constants                     # 常量
│   ├── article.constant.ts
│   ├── cache.constant.ts
│   ├── meta.constant.ts
│   ├── path.constant.ts
│   └── system.constant.ts
├── main.ts                       # 引入配置,启动主程序,引入各种全局服务
├── modules                       # 业务逻辑模块
│   ├── aggregate
│   ├── analyze
│   ├── auth
│   ├── backup
│   ├── category
│   ├── comment
│   ├── configs
│   ├── feed
│   ├── health
│   ├── init
│   ├── link
│   ├── markdown
│   ├── note
│   ├── option
│   ├── page
│   ├── pageproxy
│   ├── post
│   ├── project
│   ├── recently
│   ├── say
│   ├── search
│   ├── sitemap
│   ├── tool
│   └── user
├── processors                      # 核心辅助模块
│   ├── cache                       # Redis 缓存相关
│   ├── database                    # Mongo 数据库相关
│   ├── gateway                     # Socket.IO 相关
│   ├── helper                      # 辅助类
│   └── logger                      # 自定义 Logger
├── shared                          # 通用模型
│   ├── dto                         # 数据验证模型
│   ├── interface                   # 接口
│   └── model                       # 基本数据模型
├── utils                           # 工具类
│   ├── crud.util.ts
│   ├── dayjs.util.ts
│   ├── global.util.ts
│   ├── index.util.ts
│   ├── ip.util.ts
│   ├── nest.util.ts
│   ├── pic.util.ts
│   ├── query.util.ts
│   ├── redis.util.ts
│   ├── system.util.ts
│   ├── time.util.ts
│   ├── transfrom.util.ts
│   └── validator
└── zx.global.ts

应用结构

  • 请求处理流程

    1. request:收到请求
    2. middleware:中间件过滤爬虫 PHP 肉鸡扫描路径,记录访问历史
    3. guard:守卫过滤(鉴权)和角色附加
    4. interceptor:before:只用于 DEBUG 请求计时
    5. pipe:校验请求数据,过滤未知数据,非法类型抛错 422
    6. controller & resolver:业务控制器
    7. service:业务服务
    8. interceptor:after:数据流拦截器(格式化数据)、请求缓存
    9. filter:捕获以上所有流程中出现的异常,如果任何一个环节抛出异常,则返回错误
  • 拦截器流向

ResponseInterceptor -> JSONSerializeInterceptor -> CountingInterceptor -> HttpCacheInterceptor
  • 业务逻辑模块

    1. [Aggregate] 聚合
    2. [Analyze] 数据统计
    3. [Auth] 认证
    4. [Backup] 备份
    5. [Category] 分类
    6. [Commnet] 评论
    7. [Configs] 读取配置项
    8. [Feed] RSS
    9. [Health] 应用健康检查与日志相关
    10. [Init] 初始化相关
    11. [Link] 友链
    12. [Markdown] Markdown 解析导入导出解析相关
    13. [Note] 日记
    14. [Option] 设置
    15. [Page] 独立页面
    16. [PageProxy] 反代管理页
    17. [Post] 博文
    18. [Project] 项目
    19. [Recently] 最近
    20. [Say] 说说
    21. [Search] 搜索
    22. [Sitemap] 站点地图
    23. [Tool] 工具接口
    24. [User] 用户
  • 核心辅助模块 processors

    1. [cache] Redis 缓存相关
    2. [database] 数据库相关
    3. [gateway] Socket.IO 相关
      • 用户端
      • 管理端
      • 实时通知
    4. [helper] 辅助类
    5. [CountingService] 提供更新阅读计数
    6. [CronService] 维护管理计划任务
      • 自动备份
      • 推送百度搜索
      • 清除缓存
      • etc.
    7. [EmailService] 送信服务
    8. [HttpService] 请求模块
    9. [ImageService] 图片处理
    10. [TqService] 任务队列
    11. [UploadService] 上传服务
    12. [AssetService] 获取本地资源服务

开发

pnpm i
pnpm start

Reference

项目参考了 nodepress


Since 2021-08-31

Thanks

许可

This project is GPLv3 licensed. 2021 Innei