{"action":"closed","issue":{"url":"https://api.github.com/repos/astaxie/build-web-application-with-golang/issues/704","repository_url":"https://api.github.com/repos/astaxie/build-web-application-with-golang","labels_url":"https://api.github.com/repos/astaxie/build-web-application-with-golang/issues/704/labels{/name}","comments_url":"https://api.github.com/repos/astaxie/build-web-application-with-golang/issues/704/comments","events_url":"https://api.github.com/repos/astaxie/build-web-application-with-golang/issues/704/events","html_url":"https://github.com/astaxie/build-web-application-with-golang/issues/704","id":174435851,"number":704,"title":":cn: copy and paste , you should be shy!","user":{"login":"xgqfrms-GitHub","id":18028768,"avatar_url":"https://avatars.githubusercontent.com/u/18028768?v=3","gravatar_id":"","url":"https://api.github.com/users/xgqfrms-GitHub","html_url":"https://github.com/xgqfrms-GitHub","followers_url":"https://api.github.com/users/xgqfrms-GitHub/followers","following_url":"https://api.github.com/users/xgqfrms-GitHub/following{/other_user}","gists_url":"https://api.github.com/users/xgqfrms-GitHub/gists{/gist_id}","starred_url":"https://api.github.com/users/xgqfrms-GitHub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xgqfrms-GitHub/subscriptions","organizations_url":"https://api.github.com/users/xgqfrms-GitHub/orgs","repos_url":"https://api.github.com/users/xgqfrms-GitHub/repos","events_url":"https://api.github.com/users/xgqfrms-GitHub/events{/privacy}","received_events_url":"https://api.github.com/users/xgqfrms-GitHub/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2016-09-01T04:48:10Z","updated_at":"2016-09-01T06:51:57Z","closed_at":"2016-09-01T06:51:57Z","body":"> RESTful架构，就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便，所以正得到越来越多网站的采用。\r\n\r\n> Fielding将他对互联网软件的架构原则，定名为REST，即Representational State Transfer的缩写。我对这个词组的翻译是\"表现层状态转化\"。\r\n> 如果一个架构符合REST原则，就称它为RESTful架构。\r\n> 要理解RESTful架构，最好的方法就是去理解Representational State Transfer这个词组到底是什么意思，它的每一个词代表了什么涵义。如果你把这个名称搞懂了，也就不难体会REST是一种什么样的设计。\r\n> 三、资源（Resources）\r\n> REST的名称\"表现层状态转化\"中，省略了主语。\"表现层\"其实指的是\"资源\"（Resources）的\"表现层\"。\r\n> 所谓\"资源\"，就是网络上的一个实体，或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务，总之就是一个具体的实在。你可以用一个URI（统一资源定位符）指向它，每种资源对应一个特定的URI。要获取这个资源，访问它的URI就可以，因此URI就成了每一个资源的地址或独一无二的识别符。\r\n> 所谓\"上网\"，就是与互联网上一系列的\"资源\"互动，调用它的URI。\r\n> 四、表现层（Representation）\r\n> \"资源\"是一种信息实体，它可以有多种外在表现形式。我们把\"资源\"具体呈现出来的形式，叫做它的\"表现层\"（Representation）。\r\n> 比如，文本可以用txt格式表现，也可以用HTML格式、XML格式、JSON格式表现，甚至可以采用二进制格式；图片可以用JPG格式表现，也可以用PNG格式表现。\r\n> URI只代表资源的实体，不代表它的形式。严格地说，有些网址最后的\".html\"后缀名是不必要的，因为这个后缀名表示格式，属于\"表现层\"范畴，而URI应该只代表\"资源\"的位置。它的具体表现形式，应该在HTTP请求的头信息中用Accept和Content-Type字段指定，这两个字段才是对\"表现层\"的描述。\r\n> 五、状态转化（State Transfer）\r\n> 访问一个网站，就代表了客户端和服务器的一个互动过程。在这个过程中，势必涉及到数据和状态的变化。\r\n> 互联网通信协议HTTP协议，是一个无状态协议。这意味着，所有的状态都保存在服务器端。因此，如果客户端想要操作服务器，必须通过某种手段，让服务器端发生\"状态转化\"（State Transfer）。而这种转化是建立在表现层之上的，所以就是\"表现层状态转化\"。\r\n> 客户端用到的手段，只能是HTTP协议。具体来说，就是HTTP协议里面，四个表示操作方式的动词：GET、POST、PUT、DELETE。它们分别对应四种基本操作：GET用来获取资源，POST用来新建资源（也可以用于更新资源），PUT用来更新资源，DELETE用来删除资源。\r\n> 六、综述\r\n> 综合上面的解释，我们总结一下什么是RESTful架构：\r\n> 　　（1）每一个URI代表一种资源；\r\n> 　　（2）客户端和服务器之间，传递这种资源的某种表现层；\r\n> 　　（3）客户端通过四个HTTP动词，对服务器端资源进行操作，实现\"表现层状态转化\"。\r\n\r\n[http://www.ruanyifeng.com/blog/2011/09/restful.html?20160901123732#comment-last](http://www.ruanyifeng.com/blog/2011/09/restful.html?20160901123732#comment-last)\r\n\r\n**copy and paste , you should be shy!**@astaxie@Xianlu Bird@jinguoliang\r\n"}}
{"actor":{"display_login":"astaxie"}}