[译文和个人分析]REST vs RPC - RESTful究竟是什么?
一
好烦啊,分不清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
技术需要互相交流学习,希望有人指出本人的出错的地方
[译文和个人分析]REST vs RPC - RESTful究竟是什么?的更多相关文章
- rmi rpc restful soa 区别
rmi rpc restful soa 区别 rmi vs rpc 参考文档:http://stackoverflow.com/questions/2728495/what-is-the-differ ...
- spark 源码分析之八--Spark RPC剖析之TransportContext和TransportClientFactory剖析
spark 源码分析之八--Spark RPC剖析之TransportContext和TransportClientFactory剖析 TransportContext 首先官方文档对Transpor ...
- JVM源码分析之一个Java进程究竟能创建多少线程
JVM源码分析之一个Java进程究竟能创建多少线程 原创: 寒泉子 你假笨 2016-12-06 概述 虽然这篇文章的标题打着JVM源码分析的旗号,不过本文不仅仅从JVM源码角度来分析,更多的来自于L ...
- OpenStack源码分析 Neutron源码分析(一)-----------Restful API篇
原文:https://blog.csdn.net/happyanger6/article/details/54586463 首先,先分析WSGI应用的实现. 由前面的文章http://blog.csd ...
- Hadoop2源码分析-YARN RPC 示例介绍
1.概述 之前在<Hadoop2源码分析-RPC探索实战>一文当中介绍了Hadoop的RPC机制,今天给大家分享关于YARN的RPC的机制.下面是今天的分享目录: YARN的RPC介绍 Y ...
- 源码级强力分析hadoop的RPC机制
分析对象: hadoop版本:hadoop 0.20.203.0 必备技术点: 1. 动态代理(参考 :http://weixiaolu.iteye.com/blog/1477774 )2. Java ...
- spark 源码分析之六--Spark RPC剖析之Dispatcher和Inbox、Outbox剖析
在上篇 spark 源码分析之五 -- Spark内置RPC机制剖析之一创建NettyRPCEnv 中,涉及到了Diapatcher 内容,未做过多的剖析.本篇来剖析一下它的工作原理. Dispatc ...
- golang标准库分析之net/rpc
net/rpc是golang提供的一个实现rpc的标准库.
- spark 源码分析之七--Spark RPC剖析之RpcEndPoint和RpcEndPointRef剖析
RpcEndpoint 文档对RpcEndpoint的解释:An end point for the RPC that defines what functions to trigger given ...
随机推荐
- [Erlang15]“hello world”与<<”hello world”>>的具体区别是什么?
参见 :http://learnyousomeerlang.com/buckets-of-sockets 为了加深理解,自译如下,若理解有误或更好的建议,请帮忙指出, :) Buckets of So ...
- 谷歌三大核心技术(一)Google File System中文版
http://www.open-open.com/lib/view/open1328763454608.html
- CentOS下Docker与.netcore(一) 之 安装
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.netcore(二) 之 Dockerfile CentOS下Docker与.netcore(三)之 三剑客 ...
- 陌上花开(三维偏序)(cdq分治)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3262 其实就是三位偏序的模板,cdq分治入门题. 学习cdq分治请看__stdcall大 ...
- const 与define 创建符号常量的 用法与区别
一.define 的用法: 在c语言中我经常会看到 :#define PI 12 ,这是创建了一个符号常量,这里面要注意没有那个等于号“=”: 二.const 的用法: 1.const 也可以来创 ...
- vm虚拟机Kali无法拖拽文件解决办法
vm虚拟机Kali无法拖拽文件解决办法 apt-get updateapt-get install open-vm-tools-desktop fusereboot
- KVM虚拟环境安装
关闭防火墙 linux 半虚拟化是不能运行与安装KVM虚拟机的. #egrep '(vmx|svm)' --color=always /proc/cpuinfo yum -y install kvm ...
- 关于react的一些疑问点
参考转载:链接:http://www.jianshu.com/p/83bda9cd8c67 1.refs <input type="text" ref="input ...
- ObjectARX二次开发创建自己的静态库,如同objectARX库一样
objectARX二次开发的时候,经常会用到一些重复使用的类,如果类已经足够的好,那么我们可以编译成静态库,加快开发和编译的速度,提高工作效率. 环境vs2010+objectARX2012wizar ...
- 机器学习 - ML + 深度学习 - DL
机器学习 CNCC - 2016 | 机器学习(原文链接) Machine Learning - ML,机器学习起源于人工智能,是AI的一个分支. 机器学习的理论基础:计算学习理论 - Computa ...