主要观点:大多数应用需要状态同步,而非状态转移,应在适当情况下用合适的状态同步协议取代 REST 等。通过具体的输入元素编辑文本的例子展示了使用 REST 实现状态同步的繁琐、重复和脆弱,存在多请求同时进行时逻辑错误、显示 spinner 逻辑错误以及用户打开应用两次时数据不同步等问题,指出用其他状态转移协议也无济于事,有一些推动实际状态同步机制的举措,如 Automerge、Yjs 等,但对其成熟度存疑,希望状态同步技术能成熟。
关键信息:
- 用 React + Typescript 前端和 Rust + Axum 后端实现的典型 webapp 架构。
- REST 是状态转移协议,通常需在其之上实现状态同步,且不易做好。
- 以输入元素编辑文本为例的代码展示了使用 REST 实现状态同步的繁琐及存在的问题。
- 多请求同时进行时会出现数据保存错误等情况及解决办法。
- 提及一些推动状态同步机制的举措及对其的担忧。
重要细节: - 代码中通过
useState
管理输入元素的值、显示 spinner 和错误信息等状态。 - 处理多请求时存在顺序和并发问题导致数据不一致。
- 提到一些解决多请求问题的方法及其优缺点。
- 指出状态同步技术成熟前需不断在 REST 之上构建临时状态同步。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。