RESTful
我觉得问题很好:REST -- REpresentational State Transfer 直接翻译:表现层状态转移。这个中文直译经常出现在很多博客中。尼玛谁听得懂“表现层状态转移”?这是人话吗?我自己也困惑了很久,查询了很多资料,花了差不多一年有个还算清晰的理解。分享如下: @Ivony 老师的一句话概括很精辟: URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。 --- 简洁版 ---0. REST不是"rest"这个单词,而是几个单词缩写。但即使…
如何给老婆解释什么是RESTful
老婆经常喜欢翻看我订阅的技术杂志,她总能从她的视角提出很多有趣的问题。 一个悠闲的周日下午,她午觉醒来,又习惯性的抓起这个月的杂志,饶有兴趣地看了起来。 果不其然,看着看着,她又对我发难了,“Restful是什么呀,老公?是restaurant的形容词吗,突然就觉得好饿了啊......” 作为一个合格的程序员,我一直把能够将一项技术讲给老婆听,并且能给她讲懂,作为我已经掌握了这项技术的标准。 如果我直接回答说,“REST就是R…
简单来说:不管哪个“好”还是不“好”,RESTful API在很多实际项目中并不实用。因此真的做了项目,你可能会发现只能用HTTP+JSON来定义接口,无法严格遵守REST风格。 为什么说不实际呢?因为这个风格太理想化了,比方说: REST要求要将接口以资源的形式呈现。但实际上,很多时候都不太可能将一些业务逻辑看作资源。即使强制这么干了,也会非常非常别扭。登录就是登录,而不是“创建一个session”;播放音乐就是播放,而不是“创…
摘要:Cookie、Session、Token 这三者是不同发展阶段的产物,并且各有优缺点,三者也没有明显的对立关系,反而常常结伴出现,这也是容易被混淆的原因。1. 网站交互体验升级作为网友的我们,每天都会使用浏览器来逛各种网站,来满足日常的工作生活需求。 现在的交互体验还是很丝滑的,但早期并非如此,而是一锤子买卖。 1.1 无状态的 HTTP 协议无状态的 HTTP 协议是什么鬼? HTTP 无状态协议,是指协议对于业务处理没有记忆能力,…
JSON-RPC比RESTful API好很多。 ====== 我厌恶restful API如同我厌恶OOP;但与其说我厌恶restful,倒不如说我厌恶鼓吹restful API的一些伪·程序员。 很多鼓吹restful API的程序员,实际上并不理解restful的设计理念,纯粹是在人言亦言,随便看了几篇网文在说restful,自己便也更着鼓吹。 做为一个合格的技术人员,最基础的要求是要对自己所使用的技术有了解,明白各种技术的适用场景,然后因地制宜。 restful首先是要求必须把所…
两者没有高下之分,无非是一种约定俗成的标准。习惯用RPC就用RPC,能理解REST就用REST。 JSON-RPC比较符合直观,格式也相对宽松; REST最近正流行,有自己的一套设计规范。 REST面对的疑问跟当年刚开始流行面向对象时的情况是一样的。 它适合很多情况,但并不适合所有情况。 最差的结果就是盲目跟风,又对REST的概念和理念一知半解,最后搞出一个半吊子的怪胎,还自我标榜用了流行的RESTful API。 REST是一种设计风格,它的很多…
这个问题我觉得可以分为三大方面。 RESTful 本身的缺陷RESTful 不是一种规范,而是一种风格,它不具有强制性。RESTful 定义本身包含很多“模糊性”,导致“自由发挥的空间”很大,因此各家有各家的理解,也就造就了各种“方言”。RESTful 是一种基于“资源”的接口设计形式,核心是名词。这对于只有增删改查的业务来说很合适,但现实业务并不只有增删改查。比如常见的业务有冻结/解冻等。这时候你至少会纠结这种接口应该用PATCH/…
一文搞懂什么是RESTful API
RESTful接口实战首发公众号:bigsai 转载请附上本文链接 文章收藏在回车课堂 前言在学习RESTful 风格接口之前,即使你不知道它是什么,但你肯定会好奇它能解决什么问题?有什么应用场景?听完下面描述我想你就会明白: 在互联网并没有完全流行的初期,移动端也没有那么盛行,页面请求和并发量也不高,那时候人们对接口的要求没那么高,一些动态页面(jsp)就能满足绝大多数的使用需求。 [图片] 但是随着互联网和移动设备的发展,人们对Web…
看了很多答案,讲的很详细,但是初学者一般都看的不是很懂。 我在这里的答案主要解释什么是REST? 为什么要用REST?不包括具体该如何使用REST风格,你可以在网上看教程去学习相关知识。 要解释什么是REST,你应该先了解什么是API(Application Programming Interface,应用程序编程接口),形象一点说就是像一个公司比如腾讯,阿里巴巴之类,他们可以提供一个API,然后我们或者一些其他的小公司可以编一个软件去跟这个接口(API)…
首先假设西雅图有个男孩叫小明,他是一个科比的粉丝,然后有一天小明想用电脑看科比的生涯集锦视频。他做了如下四步: [图片] 在这个活动中,主要涉及到了四个部件: [图片] 这大概就是一个传统的电脑软件的架构。现在我们看看如何把这个传统的电脑软件变成RESTful架构的软件。 我们把小明家的电脑主机从小明西雅图搬到加州的圣布鲁罗,而小明的显示器则仍然留在家里。 [图片] 然后我们把之前连接电脑主机和显示器的“电线”换成“互联网”,并且把四…
首先要明确一点:REST 实际上只是一种设计风格,它并不是标准。(所以你可以看到网上一大堆的各种最佳实践,设计指南,但是没有人说设计标准)。 aisuhua/restful-api-design-references · GitHub 说说几个重要的概念: 1、REST 是面向资源的,这个概念非常重要,而资源是通过 URI 进行暴露。URI 的设计只要负责把资源通过合理方式暴露出来就可以了。对资源的操作与它无关,操作是通过 HTTP动词来体现,所以REST 通过 URI 暴露…
阮一峰的那篇文章我认为没有讲到实质,他能让人大概知道Restful是啥,但无法令人信服地知道REST是一种 和以往不同的、在一定场景下有一定优势的架构方式 REST的全称在文章里已经有了,其中的核心是第一个字母R,即资源(Resource) 好吧第一个字母是Representational,但核心真的是资源 REST的核心在于,当你设计一个系统的时候,资源是第一位的考虑,你首先从资源的角度进行系统的拆分、设计,而不是像以往一样以操作为角度来进…
楼上已经有人一一列举解释了REST的约束(Client-Server、Stateless、Cache、Uniform Interface、Layered System、Code-on-Demand),我就不具体具体展开约束这一个块了,准备用一个简单的列子来描述什么是Representation,什么是State,以及什么是Representation State Transfer。 例如我订阅了一个人的博客,想要获取他发表的所有文章(这里『他发表的所有文章』就是一个 资源Resource)。于是我就向他的服务发出请求,说『我要…
http是目前在互联网上使用最多的协议,没有之一。 可是http的创始人一直都觉得,在过去10几年来,所有的人都在错误的使用Http. 这句话怎么说呢? 如果说你要删除一个数据,以往的做法通常是 delete/{id} 如果你要更新一个数据,可能是Post数据放Body,然后方法是 update/{id}, 或者是artichle/{id}?method=update 这种做法让Roy Fielding很暴燥,他觉得这个世界不该这样的,所有的人都在误解而且在严重错误的误解Http的设计初衷…
先说结论:JSON-RPC 的 API 远不如 Restful 的 API,其原因是 REST 规范了 API 风格,并且与此同时帮助我们省去了很多函数设计问题,而这在构建项目时起到了至关重要的加速作用。 下面解释原因。 在说一切问题之前,我要先简单解释下什么是 JSON-RPC,什么是 Restful API。 JSON - RPC 与 Restful 说的都不是软件库或者是什么框架,它们说的都是一种「代码风格」。 好了下面开始详细解释。1. JSON-RPC 和 Restful 都属于什么?答…
数一数年限,据我接触REST到现在也差不多有8年左右了。可能大家现在对从JavaScript客户端直接访问服务器API这种模式非常的习以为常,但在8年前,Web并不是现在这个样子的。 所以,要说REST,我们先来看看在REST流行之前Web客户端是如何访问服务器接口的。早期在移动端没有流行之前,Web API的概念还非常的弱,当时是网站盛行的年代,基本遵循着后台-前端的模型。后台产生数据,然后通过“模板”的形式将数据绑定到前端HTML代码里…
80%的程序员能设计出还ok的RPC API,因为除了remote之外,它跟普通函数区别并不大。 有能力设计真正RESTful API的程序员就凤毛麟角了。因为『真·REST』是基于与普通程序员日常编码中完全不同的抽象机制——资源和超媒体。能明白如何做资源抽象(比如你至少要理解资源和资源表达resource representation的区别)就筛掉了80%的人;能明白超媒体驱动(比如至少不会问出n+1次调用这种伪问题)是什么鬼的,就又起码再筛掉80%。 所以…
简而言之,JSON-RPC无法像REST一样享受HTTP的各种优点(standard interface, stateless, cache..),又必须承担HTTP作为基于文本的协议,payload过大传输的成本以及序列化反序列化的开销。 如果你想寻求一种RPC框架,Thrift或protobuf无疑更合适。如果你把HTTP只是当做传输协议来用,唔,这是非常让人遗憾的。 当然是REST啦。