如果我环顾四周,很少有 RESTful GUI Web 应用程序。这是因为历史原因还是 RESTful 设计在常见场景中没有生产力?
我的回答是主观的,但在我看来,有两个主要障碍阻碍了 RESTful 的发展:
- 改变 - 它与传统的网站设计方式非常不同
- 挑战 - 设计一个纯 RESTful 服务器 API 和相应的丰富、健壮的客户端 UI 并不容易
在许多情况下,复杂的 GUI 需要客户端上的 JavaScript 应用程序。
在我看来,无论服务器端实现如何,复杂、丰富的客户端体验都需要一些深入的 JavaScript。
您必须保持在同一页面上并仅重新加载部分,
这是与传统的请求/响应整页到整页设计非常不同的设计。每种设计都有自己的权衡取舍。REST 设计特别适用于 AJAX 调用,但客户端代码需要仔细设计才能维护和健壮。
带有胖客户端的 RESTful 服务器:
- 扩展性好:每个用户的会话信息不会存储在稀缺的服务器内存中
- 通过线路减少请求/响应数据:不完整发送每个页面,不发送会话 ID 或
ViewState
s
- 干净的可重用 URL:提供一个干净、解耦的服务器 API,可以支持多个 UI
- pure:严格遵守 HTTP 规范(GET 不会产生副作用等)
- 客户端体验:异步事务更丰富、响应更快
但是,正如您提到的,胖客户端有缺点:
- 更容易受到 XSS 攻击,RESTful URL 确实需要小心的安全性
- 复杂的 JavaScript 可能难以开发、维护和调试(使用 OO JavaScript 可以帮助解决这个问题)
- 需要向用户表明异步请求正在后台处理
- 需要更多的客户端故障处理逻辑
- 与服务器端相比,框架和 IDE 工具在客户端开发方面一直较弱(这正在慢慢变得更好)