buffalo new --api 生成的并非纯 API 项目,因其默认启用 pop 数据库迁移、templates/ 渲染层、assets/ 前端构建链及 cookies/csrf 中间件,这些对 JSON-only API 无用且拖慢启动、增大体积、干扰构建;需手动删除 templates/、assets/、node_modules/,注释相关中间件,并禁用模板渲染,仅保留 JSON 响应逻辑,方可获得轻量可交付的纯 API。

buffalo new --api 生成的不是纯 API 项目,而是带全套前端基建和数据库工具的全栈骨架;要得到真正轻量、可交付的纯 API,必须手动删减并禁用默认行为。
为什么 buffalo new --api 不等于纯 API 项目
它默认启用:pop 数据库迁移、templates/ 渲染层、assets/ 前端构建链、cookies 和 csrf 中间件——这些对 JSON-only API 完全无用,反而拖慢启动、增大二进制体积、干扰 buffalo build 流程。常见现象是:buffalo dev 启动后报错找不到 webpack 或卡在 building assets 阶段。
删哪些目录和配置才安全
以下操作可直接执行,不影响路由注册与 JSON 响应能力:
Buffalo框架 1.0.1 版本源码包下载,适合需要错误处理改进、依赖更新、render.Download 注释和 request logger 调整的 v1 项目。
- 删除
templates/、assets/、node_modules/目录 - 清空或删除
webpack.config.js、package.json(保留go.mod) - 注释掉
app.Use(cookies.Secure())、app.Use(csrf.New())、app.Use(plugins.Favicon()) - 移除所有
app.ServeFiles(...)调用和静态文件路由 - 确认
app.JSON或c.Render(200, r.JSON(...))是唯一响应方式,禁用r.HTML及任何模板加载逻辑
精简后如何验证是否真为纯 API 模式
关键检查点:
- 运行
buffalo dev后不再触发webpack编译,日志中不出现building assets或compiling templates -
curl -I http://localhost:3000返回Content-Type: application/json,而非text/html -
buffalo build成功生成单一二进制,大小控制在 15–25MB(未精简前常超 40MB) - HTTP handler 中不再依赖
buffalo.Context的Render模板方法,只调用c.JSON或显式json.Marshal+c.Response()
真正的难点不在删文件,而在识别哪些中间件看似“通用”实则绑定浏览器场景——比如 csrf.New() 默认要求 cookie 和表单 token,API 场景下不仅无效,还会拦截无 X-CSRF-Token 头的请求。这类隐性耦合,不跑一遍真实请求很难暴露。

















