Web 最古老的功能——一个带 action 属性的表单——也能把数据存进 FormLM。把 action 指向你的接口,原生提交。
<form action="..." method="POST"> 是 Web 上最古老的契约之一:浏览器收集带名称的输入、做 urlencode、然后 POST 到 action 指定的任何 URL。几十年来这个 URL 必须是你自己的服务端脚本——这正是为什么「加个表单」过去等于「加个后端」。
表单接口解开了这层耦合。action 指向 FormLM;浏览器做的和过去完全一样;提交被存成结构化记录,每个 input 名称对应一列。页面保持静态文件——没有构建、没有运行时,而且 JavaScript 彻底关掉也照常工作。
<!-- 全部集成就这么多 --> <form action="https://formlm.me/api/v3/share/YOUR_TOKEN/form" method="POST"> <input name="topic" placeholder="你想聊聊什么?" required> <input name="email" type="email"> <fieldset> <label><input type="checkbox" name="interests" value="design"> 设计</label> <label><input type="checkbox" name="interests" value="engineering"> 工程</label> </fieldset> <button type="submit">发送</button> </form> <!-- 同名多值会以数组抵达。 --> <!-- input 名称自动成为存储列。 -->
严苛环境。隐私扩展、企业代理、纯文本浏览器都会拦脚本——原生表单照样提交。打印与存档页面。存成 HTML 数月后再打开,表单和第一天一样能用。类邮件与嵌入场景,脚本注入受限的地方。还有简单本身:没有要压缩、打包、调试的东西——页面是诚实、可读的 HTML。
代价是:提交后浏览器会落在接口的 JSON 响应上,而不是留在你的页面。两种解法——接受它(响应会确认存储并包含记录 id),或按需升级成把用户留在原页的 fetch 处理器。静态站点表单指南有 fetch 版写法;两者经同一接口存储完全相同的记录。
提交即刻在 FormLM 可见,也能导出 CSV。开启 query API 后,同一接口家族还能读:GET /{token}/query 分页翻记录,GET /{token}/summary 返回聚合统计。每个读接口同样用 ?help 回答一份 Markdown 文档——意味着脚本、自动化与 AI Agent 发现读路径和发现写路径一样容易。如果你的数据值得更多——计分、分档、个性化 PDF 报告——同一批记录就能流入 FormLM 的评估引擎。
能——表单的 action 属性可以指向任何 URL,包括另一个域名上的托管接口。浏览器把字段值 POST 到那个 URL;接口把它们存下来。你的页面完全不需要服务端代码。
能。原生表单提交是比 JavaScript 更古老的浏览器功能。FormLM 的接口接收浏览器发来的标准 application/x-www-form-urlencoded POST,所以 JS 关着、纯文本浏览器里、严苛隐私配置下,表单照常工作。
两种:原生 HTML 表单用 application/x-www-form-urlencoded(/form 路径),fetch 或 curl 客户端用 application/json(主接口)。两者存储同样的结构化记录。
当一个字段提交多个值(比如同名的一组复选框),接口把它们存成数组。单值则存为普通字符串或数字。
原生 POST 下,浏览器会显示接口的 JSON 响应。想掌控体验,可以加一小段 fetch 处理器,用 JavaScript 提交并显示你自己的消息——或者保持零 JS,接受那个朴素的响应页。