好烦啊,分不清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?

RESTful方法使我们能够将我们的页面对象一致,并在阶级式的URL上有可预测的语义松散地映射到CRUD。 同样,HTTP带有标准错误代码,MIME(Multipurpose Internet Mail Extensions)类型可以完成大部分繁重工作。因此我们不需要维护一个经常被修改的面向用户的开发项目,并从中享受RESTful带来的好处
 
请考虑以餐馆中的订单场景进行建模,设计HTTP API
-RPC API以“动词”的形式思考,将餐厅功能公开为接受参数的函数调用,并通过最合适的HTTP动词调用这些函数,例如前端的“得到”对应后端的查询等等,并且与实际功能没有实际关系,因为您每次都在调用不同的URL。 返回的状态码是手工编码的,也是你定义的一部分。
 
-相反,REST API将问题域中的各种实体建模为资源,并使用HTTP谓词来表示针对这些资源的事务 -  POST创建,PUT更新和GET读取。 在同一URL上用不同的HTTP请求都提供不同的功能。 并用常见的HTTP返回码表达请求的状态
 

三 译文解读

很显然,这篇文章很多缺点,例如明明叫做REST vs RPC - What is RESTful?,但是对于RPC又没有说什么,只是深度说明了RESTful是什么,甚至REST也是一笔带过,没有最后的那个例子理解RESTful 也是有点蛋疼。相反里面用SOAP(Simple Object Access Protocol)来做对比区分REST,而没点SOAP基础的人可能真的GG。
 

1.先说下REST和RESTful的区分

两者并不是指同一个东西
REST(Representational State Transfer),中文名表现层状态转化,他是一种设计原则
RESTful则是实现了这种原则的东西,有点经验都知道是RESTful Service RESTful API。简单理解一下,peace,peaceful,success,successful,名词,形容词,要是还不懂我也没办法了。
 

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究竟是什么?的更多相关文章

  1. rmi rpc restful soa 区别

    rmi rpc restful soa 区别 rmi vs rpc 参考文档:http://stackoverflow.com/questions/2728495/what-is-the-differ ...

  2. spark 源码分析之八--Spark RPC剖析之TransportContext和TransportClientFactory剖析

    spark 源码分析之八--Spark RPC剖析之TransportContext和TransportClientFactory剖析 TransportContext 首先官方文档对Transpor ...

  3. JVM源码分析之一个Java进程究竟能创建多少线程

    JVM源码分析之一个Java进程究竟能创建多少线程 原创: 寒泉子 你假笨 2016-12-06 概述 虽然这篇文章的标题打着JVM源码分析的旗号,不过本文不仅仅从JVM源码角度来分析,更多的来自于L ...

  4. OpenStack源码分析 Neutron源码分析(一)-----------Restful API篇

    原文:https://blog.csdn.net/happyanger6/article/details/54586463 首先,先分析WSGI应用的实现. 由前面的文章http://blog.csd ...

  5. Hadoop2源码分析-YARN RPC 示例介绍

    1.概述 之前在<Hadoop2源码分析-RPC探索实战>一文当中介绍了Hadoop的RPC机制,今天给大家分享关于YARN的RPC的机制.下面是今天的分享目录: YARN的RPC介绍 Y ...

  6. 源码级强力分析hadoop的RPC机制

    分析对象: hadoop版本:hadoop 0.20.203.0 必备技术点: 1. 动态代理(参考 :http://weixiaolu.iteye.com/blog/1477774 )2. Java ...

  7. spark 源码分析之六--Spark RPC剖析之Dispatcher和Inbox、Outbox剖析

    在上篇 spark 源码分析之五 -- Spark内置RPC机制剖析之一创建NettyRPCEnv 中,涉及到了Diapatcher 内容,未做过多的剖析.本篇来剖析一下它的工作原理. Dispatc ...

  8. golang标准库分析之net/rpc

    net/rpc是golang提供的一个实现rpc的标准库.

  9. spark 源码分析之七--Spark RPC剖析之RpcEndPoint和RpcEndPointRef剖析

    RpcEndpoint 文档对RpcEndpoint的解释:An end point for the RPC that defines what functions to trigger given ...

随机推荐

  1. IO--性能计数器

    --===================================================================== --在分析磁盘队列时,应参考数据库的其他计数器,如Che ...

  2. Cordova deploy on Android

    网上找了几篇Phonegap在安卓上的部署,版本都比较老了,不过还是部署成功了, 写篇博客以做纪录. 1.先下载IDE:戳 2.下载Phonegap:戳 3.启动ADT,新建普通Android App ...

  3. .net core MVC接受来自自前端的GET和POST请求方法的区别

    小伙伴们都知道,常用的http请求有两种方式,即GET方法和POST方法,很多刚入门的童鞋难免都会有一个误区,是不是GET是从服务器上获取数据,POST是向服务器传送数据? 我的理解是:不论是GET还 ...

  4. C# 等待框

    今天发现dev控件自带了等待框,调用方便,而且不会阻塞主线程. 拉一个窗体,界面上放两个按钮,显示等待框,隐藏. <Window x:Class="WaitDialogTest.Mai ...

  5. 单机版solr7.3

    搭建Solr7.3单机版 原博客  https://blog.csdn.net/yiqing_summer/article/details/79934584 1.Solr下载:http://mirro ...

  6. 【Apache系列】linux下Apache的常用操作

    1. 启动/停止 1.1假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况 apahce启动命令: /usr/local/apache2/bin/apachect ...

  7. [HAOI2008] 排名系统

    题目链接:戳我 要注意因为数可能会对应很多人,但是输出的时候要按照添加的顺序输出.所以我们不能将相同值的节点合并,用set维护.就算值相同也只能新开节点. 然后就没有什么了...懒得写哈希表..直接上 ...

  8. “全栈2019”Java第五十一章:继承与final关键字详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. LAMPer 技能树

  10. [转](译)KVO的内部实现

    转载自:http://www.cocoachina.com/applenews/devnews/2014/0107/7667.html   09年的一篇文章,比较深入地阐述了KVO的内部实现.   K ...