小草之歌仿写四节:没有人真正理解REST or HTTP
来源:百度文库 编辑:偶看新闻 时间:2024/04/28 21:49:54
Literate Programming - Nobody Understands REST or HTTP
这篇文章很有意思,挖掘了REST深层,特别重点指出REST的URL是名词。
比如银行转帐,从帐户1转到帐户2转去500元,那么REST URL一般人写成:
POST /accounts/1/transfer/500.00/to/2
其实错误的,因为REST中R代表Resource资源,资源是名词,你并不是在转钱,而是在创建一个转帐交易资源。应该是:
这个概念很有意思,我们知道DDD也是一个名词建模,在DDD中,转帐交易我们是使用一个服务来实现,当然这里的服务可以看成是一个资源。
曾经有一篇文章认为WEB天生是面向函数的,这里的“POST”可以看成是一个方法函数,而“资源名词”看成方法的参数。
将来是否有一种技术思想,将DDD REST以及面向函数三者完美捆绑一起,通过URL代表领域模型类图的结构关系,比如/forum/thread,代表Forum类的子类Thread,领域模型被显式地用URL表达出来,用户访问形式和我们分析设计的模型合二为一,大道至简。
遐想太多,回到这篇文章,作者认为这个转帐应该是创建一个转帐交易资源,改为:
然后加入参数 from=1&to=2&amount=500.00
在面向函数FP中,函数也可以看成是一个对象,对象也就是资源,在REST这里好像得到了统一。
接着作者思路,当创建了交易资源后,服务器REST端将返回:
返回的URL是http://foo.com/transactions/1,也就是告诉你已经成功创建了transactions这个交易,下一步你可以访问其中的/transactions/1
当REST客户端再次访问:
GET /transactions/1 HTTP/1.1
返回结果是:
HTTP/1.1 blah blah blah
{"id":1,"status":"in-progress"}
表示正在处理当中,我们可以继续访问这个URL,直至其完成或失败。这就是名词思路。
有人可能认为这个名词思路和WEB的天生函数FP有违背,实际上,REST的POST/GET等四个动作已经表明是函数,那么URL无疑代表业务名词,当然,是不是可以将URL又代表业务方法或函数呢?其实,这里transactions交易被当作资源,而交易显然是业务方法或函数。
这篇文章很有意思,挖掘了REST深层,特别重点指出REST的URL是名词。
比如银行转帐,从帐户1转到帐户2转去500元,那么REST URL一般人写成:
POST /accounts/1/transfer/500.00/to/2
其实错误的,因为REST中R代表Resource资源,资源是名词,你并不是在转钱,而是在创建一个转帐交易资源。应该是:
POST 资源名词
这个概念很有意思,我们知道DDD也是一个名词建模,在DDD中,转帐交易我们是使用一个服务来实现,当然这里的服务可以看成是一个资源。
曾经有一篇文章认为WEB天生是面向函数的,这里的“POST”可以看成是一个方法函数,而“资源名词”看成方法的参数。
将来是否有一种技术思想,将DDD REST以及面向函数三者完美捆绑一起,通过URL代表领域模型类图的结构关系,比如/forum/thread,代表Forum类的子类Thread,领域模型被显式地用URL表达出来,用户访问形式和我们分析设计的模型合二为一,大道至简。
遐想太多,回到这篇文章,作者认为这个转帐应该是创建一个转帐交易资源,改为:
POST /transactions
然后加入参数 from=1&to=2&amount=500.00
在面向函数FP中,函数也可以看成是一个对象,对象也就是资源,在REST这里好像得到了统一。
接着作者思路,当创建了交易资源后,服务器REST端将返回:
HTTP/1.1 201 OK
Date: Sun, 3 Jul 2011 23:59:59 GMT
Content-Type: application/json
Content-Length: 12345
Location: http://foo.com/transactions/1
{"transaction":{"id":1,"uri":"/transactions/1"}}
返回的URL是http://foo.com/transactions/1,也就是告诉你已经成功创建了transactions这个交易,下一步你可以访问其中的/transactions/1
当REST客户端再次访问:
GET /transactions/1 HTTP/1.1
返回结果是:
HTTP/1.1 blah blah blah
{"id":1,"status":"in-progress"}
表示正在处理当中,我们可以继续访问这个URL,直至其完成或失败。这就是名词思路。
有人可能认为这个名词思路和WEB的天生函数FP有违背,实际上,REST的POST/GET等四个动作已经表明是函数,那么URL无疑代表业务名词,当然,是不是可以将URL又代表业务方法或函数呢?其实,这里transactions交易被当作资源,而交易显然是业务方法或函数。
为什么没有人能真正理解我?
为什么没有人理解我?
有人能真正的理解抑郁症病人吗?
似乎没有人能理解我
有没有人真正了解安利的?
怎样深入理解HTTP协议?
谁能真正理解爱情?
You can go to one the finest b_______ to swim or to have a rest.根据首字填空
有人理解吗?
我想珍惜友谊,真的想珍惜,可是我真的好苦,没有人理解!
没有人会理解我 复杂的民族 家庭 爱情矛盾
有没有人能理解活着是为了什么?到底为了什么?
有没有人曾经在这个http://www.buy91.com/购物,信誉好不好?
请问有没有人知道最新最快的HTTP代理或者SOCKT代理?
有没有人能找到龟摔下舞台的视频 在线或者MO、HTTP下载呢?!
有没有人相信网恋?在网上会不会有真正的爱情?
有没有人真正经历过灵魂和自己的身体分离???
有没有人真正经历过灵魂和自己的身体分离???
有没有人可以告诉我,什么是真正的爱情?爱要怎样才完美?
直销,不知道有没有人真正了解的呢?是不是都是骗人的呢?
是不是没有人是真正可以相信的? 为什么谈恋爱会这么麻烦呢?
有没有人用过锅王胡师傅的,讲讲真正的效果如何?
世界上有没有人真正把脸瘦下来了?请传授亲身经验~~~
世界上有没有人真正把脸瘦下来了?请传授亲身经验