{"repo":"yourtion/node-erest","free":true,"listed":false,"github":"https://github.com/yourtion/node-erest","clone":"git clone https://github.com/yourtion/node-erest.git","description":"快速构建 Rest API 并自动生成API文档、Swagger、Postman文件与测试","language":"TypeScript","stars":10,"topics":["rest-api","node-restful","express-rest-api","easy-rest","node-erest","api-docs","api-test","rest-doc","swagger","markdown"],"license":"MIT","category":"api-integrations-sdks","readme_excerpt":"ERest 基于 TypeScript 的 API 框架，支持自动文档生成、类型安全校验与测试脚手架。兼容 Express、Koa、@leizm/web 等主流框架。 📖 API 文档 ： （master 推送后由 CI 自动构建部署） 特性 - TypeScript 原生支持，完整的类型推导与类型安全 - 原生 Zod 集成，高性能参数校验与类型推导 - 自动文档生成，支持 Swagger、Postman、Markdown 等格式 - 内置测试脚手架，可像调用本地方法一样编写 API 测试 - 多框架支持：Express、Koa、@leizm/web - 自动生成基于 axios 的客户端 SDK 安装 核心包 + 所用框架的 adapter 子包： ERest 核心框架无关，三框架适配器作为独立子包（ @erest/express / @erest/koa / @erest/leizmweb ）按需安装。 TypeScript 工程 ：erest 是 ESM-only（ type: \"module\" ）。若用 TypeScript，请确保安装 @types/node （erest 的 peerDependencies 声明了 @types/node ），并使用如下 tsconfig.json 关键项（注意： 不要 设置 baseUrl ，它在 module: NodeNext 下已废弃且会触发 TS5101 警告）： 编译/运行 TypeScript 用本地安装的 typescript （ npx tsc 在未装 typescript 时会解析到 npm 上一个废弃的同名包）。推荐： npm install -D typescript @types/node ，再 npx tsc 或 node --import tsx src/index.ts 。 快速开始 ERest 通过统一的 bind() 方法接入任意框架。API 定义方式与框架无关，接入方式按框架区分。 定义 API 无论使用哪个框架，API 的定义方式完全一致。推荐使用 registerTyped ——它基于 Zod schema 自动推导参数类型，handler 签名为 框架无关的 (req, ctx) ，同一份 handler 可被 Express / Koa / @leizm/web 复用： handler 签名说明 ： registerTyped 的 handler 是 (req, ctx) ，其中 req.params/query/body/headers 是分层校验后的参数， ctx.reply.json()/status()/send() 是统一的响应接口。 不要 用 Express 的 (req, res) 或 Koa 的 ctx.body = ... 写法—— 详见 register 与 registerTyped 的区别。 根据所选框架，参考下文对应的接入方式。 框架接入 bind() 接收一个 adapter 实例（由对应框架的子包提供），支持两种模式： 模式 适用场景 调用方式 ------ ---------- ---------- 非 forceGroup API 直接挂载到指定 router，路径即定义的 path bind({ adapter, router }) forceGroup 按分组自动挂载到 app，每个分组有独立前缀 bind({ adapter, app, router: RouterCtor }) Express Express ","default_branch":null,"files":null,"tree":[],"storefront":"/r/yourtion","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/yourtion/node-erest/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}