Files
build-web-application-with-…/8.3.md
2012-10-09 22:13:38 +08:00

30 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#8.3 REST
RESTful架构就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便所以正得到越来越多网站的采用。接下来让我们来了解这种架构到底是怎么样的Go里面如何来实现RESTful。
##什么是REST
REST(REpresentational State Transfer)描述了一个架构样式的网络系统比如Web应用程序。它首次出现在 2000年Roy Thomas Fielding的博士论文中他是HTTP规范的主要编写者之一。REST指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。
Web应用程序最重要的REST原则是客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启客户端不会得到通知。此外无状态请求可以由任何可用服务器回答这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。
在服务器端应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体它向客户端公开。资源的例子有应用程序对象、数据库记录、算法等等。每个资源都使用URI(Universal Resource Identifier)得到一个惟一的地址。所有资源都共享统一的界面以便在客户端和服务器之间传输状态。使用的是标准的HTTP方法比如 GET、PUT、POST 和 DELETE。
另一个重要的REST原则是分层系统这表示组件无法了解它与之交互的中间层以外的组件。通过将系统知识限制在单个层可以限制整个系统的复杂性促进了底层的独立性。
我们看下图展示了REST的架构图如何实现
![](images/8.3.rest2.png?raw=true)
当REST架构的约束条件作为一个整体应用时将生成一个可以扩展到大量客户端的应用程序。它还降低了客户端和服务器之间的交互延迟。统一界面简化了整个系统架构改进了子系统之间交互的可见性。REST简化了客户端和服务器的实现。而且对于使用REST开发的应用程序更加容易扩展。
下图展示了REST的扩展新性
![](images/8.3.rest.png?raw=true)
##RESTful的实现
## links
* [目录](<preface.md>)
* 上一节: [WebSocket](<8.2.md>)
* 下一节: [RPC](<8.4.md>)
## LastModified
* $Id$