内容提要
本文介绍“零后端”方案,用飞书多维表格作为云端数据库,通过前端加代理实现股票仓位管理。架构包括浏览器、Cloudflare Tunnel、nginx、飞书代理和飞书表格,避免CORS和密钥落盘。系统含三个页面:股票持仓、操作记录和飞书设置,后续系列将详述前端搭建、数据库读写和部署。
延伸解读
零后端方案的适用边界
本文的“零后端”并非完全无服务器,而是将数据库与运维外包给飞书,用极薄代理转发请求。该方案适合个人或小团队的低并发工具,如记账式股票管理。若涉及高并发、复杂事务或敏感数据,飞书多维表格的API限制和第三方依赖可能成为瓶颈,需谨慎评估。
安全设计的关键点
浏览器因CORS无法直连飞书,代理仅做转发和换token,不落盘密钥,凭据通过请求头内存解码。公网入口由Cloudflare Tunnel建立,本机端口不暴露,降低了攻击面。但用户需自行管理飞书凭据的保密性,且代理进程本身仍需防护,避免被恶意利用。
前端聚合派生视图的启示
股票持仓页不读独立表,而是由操作记录前端聚合生成,减少了表间同步和冗余。这种设计适合数据源单一、计算逻辑简单的场景,但需注意前端计算可能受数据量影响,且FIFO口径等复杂逻辑需仔细验证,避免因前端错误导致数据展示偏差。
Q&A
为什么选择飞书多维表格作为数据库?
飞书多维表格(Bitable)本质是带类型约束的在线表格,支持日期、单选、多选、数字、文本等字段,正好覆盖交易记录所需类型,并提供开放的REST API,前端调通API即可获得免运维的云端数据库,无需租服务器和装数据库。
零后端架构中如何解决浏览器直接调用飞书API的CORS问题?
在浏览器和飞书之间增加一个极薄的代理(开发时用Vite中间件,生产时用常驻Node进程),该代理只做转发和换token,不存业务数据,也不落盘密钥。浏览器通过代理访问飞书API,从而绕过CORS限制。
零后端系统的整体架构是怎样的?
浏览器通过HTTPS访问Cloudflare Tunnel,Tunnel出站回环到本机nginx(仅本机监听8888),nginx将静态资源请求转发到前端dist,将/api/feishu/*请求转发到feishu-proxy(仅本机监听8787),feishu-proxy再通过X-Feishu-Credentials头携带凭据,内存解码后转发到飞书多维表格。公网入口由Cloudflare Tunnel建立,本机端口不暴露公网。
系统包含哪三个页面?各自功能是什么?
三个页面:1. 股票基本信息:显示持仓股票数、浮动盈亏、各股持仓卡(持仓中/已清仓),由操作记录前端聚合生成,不读独立表;2. 股票操作记录:买入/卖出流水,支持筛选、新增/编辑/删除,含未卖出手数(FIFO口径);3. 飞书设置:配置App凭据、多维表格,进行连通测试和写权限探测。
零后端方案中如何保证安全性?
浏览器不直连飞书(被CORS拦截),凭据通过X-Feishu-Credentials头由代理在内存中解码后转发,服务器不落盘密钥。nginx和feishu-proxy仅本机监听,公网入口由Cloudflare Tunnel建立,本机端口不暴露公网,避免密钥泄露和外部直接访问。
零后端方案适合什么场景?
适合个人或小团队的工具类应用,如文中提到的股票仓位管理,需要数据存储和简单CRUD,但不想维护服务器和数据库,希望快速上线且免备案。飞书多维表格作为数据库,前端加代理即可实现。
本系列文章后续会介绍哪些内容?
后续包括:前端工程搭建(深色玻璃拟态UI)、核心的飞书多维表格读写(含CORS绕过)、部署上线(免端口免备案)、调试实录(三个真实调试决策)、复盘对比与展望。