RESTful API service & GraphQL for Mix Space, powered by
nestjs
, requiredmongoDB
&Redis
.
适用于 Mix Space 的 RESTful API & GraphQL 服务端应用;基于
nestjs
(nodejs),需安装mongoDB
和Redis
方可完整运行。
配合相关项目一起使用:
接口文档通过开发环境 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
cd
mkdir -p mx/server
cd mx/server
wget https://cdn.jsdelivr.net/gh/mx-space/server-next@master/docker-compose.yml
docker-compose up -d
.
├── 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
-
请求处理流程
- request:收到请求
- middleware:中间件过滤爬虫 PHP 肉鸡扫描路径,记录访问历史
- guard:守卫过滤(鉴权)和角色附加
- interceptor:before:只用于 DEBUG 请求计时
- pipe:校验请求数据,过滤未知数据,非法类型抛错 422
- controller & resolver:业务控制器
- service:业务服务
- interceptor:after:数据流拦截器(格式化数据)、请求缓存
- filter:捕获以上所有流程中出现的异常,如果任何一个环节抛出异常,则返回错误
-
拦截器流向
ResponseInterceptor -> JSONSerializeInterceptor -> CountingInterceptor -> AnalyzeInterceptor -> HttpCacheInterceptor
-
- [Aggregate] 聚合
- [Analyze] 数据统计
- [Auth] 认证
- [Backup] 备份
- [Category] 分类
- [Commnet] 评论
- [Configs] 读取配置项
- [Feed] RSS
- [Health] 应用健康检查与日志相关
- [Init] 初始化相关
- [Link] 友链
- [Markdown] Markdown 解析导入导出解析相关
- [Note] 日记
- [Option] 设置
- [Page] 独立页面
- [PageProxy] 反代管理页
- [Post] 博文
- [Project] 项目
- [Recently] 最近
- [Say] 说说
- [Search] 搜索
- [Sitemap] 站点地图
- [Tool] 工具接口
- [User] 用户
-
- [cache] Redis 缓存相关
- [database] 数据库相关
- [gateway] Socket.IO 相关
- 用户端
- 管理端
- 实时通知
- [helper] 辅助类
- [CountingService] 提供更新阅读计数
- [CronService] 维护管理计划任务
- 自动备份
- 推送百度搜索
- 清除缓存
- etc.
- [EmailService] 送信服务
- [HttpService] 请求模块
- [ImageService] 图片处理
- [TqService] 任务队列
- [UploadService] 上传服务
- [AssetService] 获取本地资源服务
pnpm i
pnpm start
项目参考了 nodepress
Since 2021-08-31
Thanks
This project is GPLv3 licensed. 2021 Innei