一
好烦啊,分不清REST RPC RESTful的区别,所以只能翻译一篇谷歌的文章,括号中是我的补充
原文连接 REST vs RPC - What is RESTful?
注意需要*
二 译文
在所有的编程开发中,很少有术语像REST那样,包含太多无意意义(buzzwordized )或者过量定义(overdefined)。最常见的误解之一,使用HTTP动词(如GET,PUT,POST),而不是使用SOAP绑定网站前端服务器的任何设计框架都称为“RESTful”。这种模糊的REST和XML-RPC(或JSON-RPC等)界限,对实践造成了一些非常严重的后果。
因为误解REST而开发的POX(Plain Old XML)网络服务,有很多 web api实现并没有完全了解REST框架,从而没有真正用到RESTful API的简单性和禅性(相反认为RESTful更加的麻烦)
REST vs RPC
REST不是像WCF这样的框架,HTTP这样的协议,JAX-RS这样的框架,SOAP这样的通信格式。REST是一种设计原则,是一种表示软件解决方案的结构化方式 - 特别是将解决方案的各个方面暴露给客户端消费者。REST的核心原则是各个方法的返回可以建模为客户端可以使用或采取行动的资源。REST的核心原则是解决这些方面的问题,可以被建模成被客户端消费理解的返回对象。
这种面向资源的思想,而不是客户端和服务器之间通信的实现细节,实际上就是REST的全部内容。 这是在http实现的RESTful API与RPC的关键区别。
Why is this(RESTful ) important?
三 译文解读
1.先说下REST和RESTful的区分
2.REST是什么?
正确返回{"login":true}错误返回{true}核心:资源对象要被描述
使用或采取行动----同一个url的get,put,del,post请求返回的对象一致
不是客户端和服务器之间通信的实现细节---不需要RPC那样返回操作结果
3.RESTful是什么?RESTful API是什么?
RESTful则是实现了这种原则的东西,总结点就是REST是原则,RESTful是实现。
RESTful API的具体实现则是
资源---url本身就是名词,而不含有动词
错误
/getLoginInfo 正确
/loginInfo
使用或采取行动----略
不是客户端和服务器之间通信的实现细节---使用http的状态码来描述请求状态而不是自定义code
例如这种常见的返回对象是不符合RESTful API的
{
code:001
message:密码错误
data:{
}
}
4.红字的理解
整篇文章我就红字看的有点懵逼,为什么这就带来好处了?但是联系下前后文,想到了RPC和SOAP突然就懂了,,,
RPC不说,文中的例子说的很清楚,说下SOAP
现在可能没啥人了解过SOAP这时代之泪,简单的说就是HTTP+XML,通过特定标签获取数据,那么只要数据结构有改变,前端的改动就会很大,甚至无法正常显示,耦合巨高。
当然可能就我有这红字理解问题,,,
四
RPC说下,Remote Procedure Call,远程过程调用,想想你连远程MySQL吧。
那么可以得出结论
RPC包含REST
技术需要互相交流学习,希望有人指出本人的出错的地方