老澳门葡京娱乐官网什么样用深切浅出的语言表达什么叫 REST,以及如何是 RESTful?

作者:覃超

1

链接:https://www.zhihu.com/question/28557115/answer/48094438

那年,十三岁,好像是夏天呢,你转学到我们班里,一身的桀骜不顺,叛逆的类似要与满世界作对。

来源:知乎

您穿牛仔,说一口洋气的国语,抽烟,打架,旷课,打台球,来没多长期就和高年级的坏孩子称兄道弟。

文章权归小编所有,转发请联系小编得到授权。

典型的难点少年。

@Ivony教育工小编的一句话概括很深邃:

你在班上的时日不曾固定,好像你想来就来,不想来就可以不来,好像没人可以管你,也没人愿意管你,你像被世界甩掉的孤儿。

URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。

你在班上没有朋友,也不搭理别人,很酷的榜样。不过你有时候却跑来和我讲讲,不过你不和别人说话,偏偏要和自家说话,我觉得那样会来得自己和旁人分歧,所以我一而再很拘束。

— 简洁版 —

班上的男孩子都看不惯你,特想揍你,至于有没有揍成,我平素不得而知。但你似乎最擅长的就是打架,听说您就是因为打架转的学。

0.
REST不是”rest”那几个单词,而是多少个单词缩写。但即便那多少个单词说出去,也无力回天驾驭在说哪些
-_-!! (不是要贬低人,是自我自己也领略困难);

2

1.
REST叙述的是在网络中client和server的一种互动方式;REST本身不实用,实用的是什么样统筹
RESTful API(REST风格的互联网接口);

自家是同班,老师眼里战绩杰出的乖乖女。

  1. Server提供的RESTful
    API中,URL中只利用名词来指定资源,原则上不行使动词。“资源”是REST架构或者说整个网络拍卖的大旨。比如:

你是校友,老师眼里兴妖作怪的坏小孩。

http://api.qc.com/v1/newsfeed:
获取某人的特种;

俗套的电视机剧里说,坏小孩最欣赏调侃,整蠱乖乖女。

http://api.qc.com/v1/friends:
获取某人的至交列表;

唯独您没有。

http://api.qc.com/v1/profile:
获取某人的详细消息;3.
用HTTP协议里的动词来落到实处资源的拉长,修改,删除等操作。即通过HTTP动词来达成资源的气象扭转:

那阵子我们上学离家远,为了节省时间,晌午貌似吃从家带的菜然后去客栈打饭吃,带来的菜窝到正午应有都不是很好吃了。

GET    用来收获资源,

您不雷同,你每一日住在母校,吃在食堂,但凡住在全校的师资和餐饮店师傅您都接近很熟。

POST  用来新建资源(也足以用来立异资源),

有四遍,我照常去食堂打饭,回来却发现自家菜盒子里菜被换了,换成了那种食堂刚炒出来的还冒着奇异热气的菜。

PUT    用来更新资源,

那一幕我至今还记得,我倒掉了那份菜,就就像要与全球宣布,我和此人某些关乎也从不,他给我的,不是自己愿意的。我不想成为和豪门不雷同的小儿。

DELETE  用来删除资源。比如:

本身固执地不再和您讲讲,有您的地点我尽量躲开。

DELETEhttp://api.qc.com/v1/friends:
删除某人的好友 (在http parameter指定好友id)

然则,叛逆如你,只会不尽如人意,越挫越勇,变本加厉。

POSThttp://api.qc.com/v1/friends:
添加好友

你每天出现在本人眼前的光阴进而多,花样百出,逗比和敬意自由切换。

UPDATEhttp://api.qc.com/v1/profile:
更新个人资料

您说,你一天不理我,我就用烟头在手上烫一个标志。

取缔行使:
GEThttp://api.qc.com/v1/deleteFriend图例:

如此黑社会的办法也唯有你那种难点少年才能想的出呢。

<img
src=”https://pic1.zhimg.com/7405939b62a73f28846533de08db3a80\_b.jpg
data-rawwidth=”1328″ data-rawheight=”702″ class=”origin_image
zh-lightbox-thumb” width=”1328″
data-original=”https://pic1.zhimg.com/7405939b62a73f28846533de08db3a80\_r.jpg"&gt;

自家不信任您会对友好这么凶残。可是却无意识在心头偷偷担心您真做出那样傻的表现。

4.
Server和Client之间传递某资源的一个表现形式,比如用JSON,XML传输文本,或者用JPG,WebP传输图片等。当然仍是可以压缩HTTP传输时的多少(on-wire
data compression)。

到底有一天,你露出了您满是烫伤的那只手。

  1. 用 HTTP Status Code传递Server的情况新闻。比如最常用的 200
    表示成功,500 表示Server内部错误等。

本人奇怪又莫名的心痛。

重中之重新闻就这样点。最终是要解放思想,Web端不再用事先典型的PHP或JSP架构,而是改为前段渲染和附带处理大致的商务逻辑(比如AngularJS或者BackBone的一部分样例)。Web端和Server只行使上述定义的API来传递数据和更改多少状态。格式一般是JSON。iOS和Android不言而喻。不问可知,Web,iOS,Android和第三方开发者变为平等的角色通过一套API来一块消费Server提供的劳动。

万般傻气!

— 详细版 —

以那种自残的格局你赢了这一场竞技。

先说REST名称

咱俩也从没变得更好。我小心翼翼,诚惶诚惧,我们的出口好像永远都是你在问我在答,不过自己却感受到了你的兴奋。

REST — REpresentational State Transfer

3

第一,之所以晦涩是因为前面主语被去掉了,全称是 Resource Representational
State
Transfer:通俗来讲就是:资源在网络中以某种表现形式进行情形转移。分解开来:

有人说,青春是道明媚的发愁。

Resource:资源,即数据(后面说过网络的着力)。比如 newsfeed,friends等;

自己不知道自家现在骨子里的忧伤是否当时年青里埋下的种子。

Representational:某种表现格局,比如用JSON,XML,JPEG等;

自家只略知一二,因为您,我的金请夏碰着了稍稍中伤,而变得不是那么美好。

State Transfer:状态变化。通过HTTP动词已毕。

您如此跋扈。

REST的出处

下雨天,你非要在雨中淋着跟在自身身后。

罗伊 Fielding的结束学业诗歌。那哥俩参预统筹HTTP协议,也是Apache Web
Server项目(可惜现在一度是 nginx 的全球)的co-founder。PhD的结束学业高校是
UC
Irvine,Irvine在加州,有着富饶的阳光和出色的海滩,是资深的富人区。Oculus
VR 的总部就坐落于此(虚拟现实眼镜,被FB收购,CTO为Quake和Doom的撰稿人 JohnCarmack)。

本身回家,你非要在途中等着。

议论周知,随想都是生硬难懂的。当年在CMU阅读的时候,很多科目都会配备每一周两篇的Paper
review。现在回顾起来每一遍写Paper
review都是自身极其悲伤的时候。REST那篇博士杂谈毫无疑问更甚。

自己住在老师家,你甚至跑去和教育者聊天。

随想地址:Architectural Styles and the Design of Network-based Software
Architectures

放假,你不知从哪弄来一辆破摩托,沿着我家门口来来回回地轰鸣个不停。以至于,我后来听到摩托的轰鸣声从我家门口过,我就要躲起来。幸好,那时其实其本没有怎么摩托车。

REST章节:Fielding Dissertation: CHAPTER 5: Representational State
Transfer
(REST)

…….

REST这章我初读了,整个随想没有读完 =_=

你的举动,都让自家如骨在喉,芒刺在背。

<img
src=”https://pic3.zhimg.com/11cdfc60bde58e8545bafe42f0af79ca\_b.jpg
data-rawwidth=”500″ data-rawheight=”375″ class=”origin_image
zh-lightbox-thumb” width=”500″
data-original=”https://pic3.zhimg.com/11cdfc60bde58e8545bafe42f0af79ca\_r.jpg"&gt;

终于有一天,老师在开会时说到了早恋那些敏感的话题,那言犹在耳地刺痛了自身。

RESTful API

自我记得那多少个上午,我在同校的伴随下哭哭啼啼地回了家,我百口莫辩,只是委屈到吃喝玩乐。

实用的是如何科学地领悟 RESTful架构和统筹好RESTful API。

自我痛恨你把自己拉下了水。

率先为何要用RESTful结构吧?

自家想自己的忧郁就是从那时开头患上的呢。

世家都清楚”曹魏”网页是前端后端融在同步的,比如事先的PHP,JSP等。在事先的桌面时代难点不大,可是近年来移动互连网的进步,各体系型的Client见怪不怪,RESTful可以透过一套统一的接口为
Web,iOS和Android提供服务。别的对于常见平台来说,比如非死不可platform,博客园开放平台,微信公共平台等,它们不须求有显式的前端,只需求一套提供服务的接口,于是RESTful更是它们最好的取舍。在RESTful架构下:

4

<img
src=”https://pic2.zhimg.com/06ee404783540f0af299042057738a99\_b.jpg
data-rawwidth=”550″ data-rawheight=”250″ class=”origin_image
zh-lightbox-thumb” width=”550″
data-original=”https://pic2.zhimg.com/06ee404783540f0af299042057738a99\_r.jpg"&gt;

十四岁,教我的老师调走了,爸妈让自身跟着导师转学了。

Server的API如何设计才满意RESTful必要?

这里没有你。

首先是简洁版里面的那几点。外加一些附带的 best practices:

真好。

  1. URL root:

本人爱不释手陌生的条件。

https://example.org/api/v1/***

自己又足以是常规的娃子了。

https://api.example.com/v1/\2.
API versioning:*

在万分陌生的地点我又认识了好多新校友,有了新的交情。

可以放在URL里面,也足以用HTTP的header:

只是本人有时会回忆你。

/api/v1/

听说你也相差了我们的院所,不知去向。

  1. URI使用名词而不是动词,且推荐用复数。

新生,我或者不习惯跟着导师的生存,爸妈又把我转了归来。

BAD

原本的班级已被拆掉重组,有新面孔也有老同学。

/getProducts

自身又起来喜欢地读书了。

/listOrders

5

/retrieveClientByOrder?orderId=1

一时间就是初三了。

GOOD

每日被深奥的数理化折腾的有气无力。

GET /products : will return the list of all products

有一天,有个同学来叫自己说,有人在校园门口找你。

POST /products : will add a product to the collection

我的心瞬间就发现到自然就是您了,你就是这么阴魂不散的人。

GET /products/4 : will retrieve product #4

本身魂不附体,生怕被你重蹈覆辙。

PATCH/PUT /products/4 : will update product #4

丢失,你不会用尽。

  1. 有限支撑  HEAD 和 GET
    方法是安全的,不会对资源情状有所变动(污染)。比如严谨杜绝如下景况:

我只可以装作若无其事。

GET /deleteProduct?id=1

老样子,你问我答。

  1. 资源的地方推荐用嵌套结构。比如:

幸而,很快就上课了。

GET /friends/10375923/profile

好在,你好像长大了,不再像两年前同一会纠缠不休。

UPDATE /profile/primaryAddress/city6.
警惕再次回到结果的大小。假若过大,及时举办分页(pagination)或者插手限制(limit)。HTTP协议帮助分页(Pagination)操作,在Header中使用
Link 即可。

平心易气的诀别。

  1. 运用正确的HTTP Status Code表示访问状态:HTTP/1.1: Status Code
    Definitions

6

8.
在再次来到结果用醒目易懂的文件(String。注意重回的一无所长是要给人看的,防止用
1001 那种错误新闻),而且方便地投入注释。

三年,说不上太使劲的求学,终于见了领悟。考上中专,离开家。抑制不住要去更广阔天地的梦想与欢跃。

9.
有关安全:自己的接口就用https,加上一个key做五回hash放在最终即可。考虑到国情,HTTPS在有线网络里不平静,可以使用Application
Level的加密手段把任何HTTP的payload加密。有趣味的意中人可以用手机连上电脑的共享Wi-Fi,然后用查理监听微信的网络请求(发照片或者刷朋友圈)。

自己认识了更加多的敌人,大家其乐融融。

如倘若平台的API,可以用成熟不过复杂的OAuth2,新浪和讯这篇:授权机制表明

有一天,门卫二姑喊接电话,我拿起电话,居然是您,我迄今仍不知道你是怎么在那多少个电话还未普及的年份弄到大家校园的对讲机的。并且照旧要转很频仍的这种电话。

各端的求实已毕

忘掉聊了什么样,反正大家永远都是你在说,我在沉默。

如上边的图所示,Server统一提供一套RESTful
API,web+ios+android作为同一公民调用API。各端发展到前天,都有一套相比成熟的框架来帮开发者一矢双穿。

你的动静从电话机那端传来,充满磁性。我先是次听到”声音控”这一个词就悟出了您。

— Server —

7

推荐: Spring MVC 或者 Jersey 或者 Play Framework

小日子一每天寿终正寝。寒假快来了。你突然冒出了,其实我对您的神出鬼没应该要不足为奇才对,不按常理出牌才是您呵。

教程:

自家从未地点可以带你去,只能带你去我们高校隔壁的一座山顶走走。你抽着烟,即便我很讨厌烟味,但不得不认可,你是本人见过抽烟最有范儿的男生。

Getting Started · Building a RESTful Web
Service

那应该是我们首次法不阿贵的肩并肩去散散步呢。

— Android —

即使我或者很拘束。而你依旧依旧逗比和深情自由切换。

推荐: RetroFit
(Retrofit)
或者 Volley (mcxiaoke/android-volley ·
GitHub
谷歌官方的被block,就不贴了
)**

自我接近穿了一件白棉袄,你围了一条羊绒围巾。

教程:

很冷,你把围巾围在本人脖子上,不容置疑的,没有协议的绵薄。我前几日才知道,你最大的魅力就在于此。

Retrofit โ�� Getting Started and Create an Android
Client

后来,那条围巾就直接压在我家的箱子里,偶尔拿出去翻晒,似乎晒一段晦涩而又美好的旧时光。直到大家搬家,那条围巾也不知所踪了。

火速Android开发种类互联网篇之Retrofit

8

— iOS —

少壮年少的小日子终于没有了。

推荐:RestKit (RestKit/RestKit ·
GitHub
)

我们好像真的长大了。

教程:

咱俩就像是两条平行线在和谐约定的规则里越走越远。

Developing RESTful iOS Apps with
RestKit

自身忘记了我们最终五次相会是哪些时候,也记不清自己说了怎么样,回忆里总是记得您狠狠地砸了一个打火机,炸出很大的声音。那是你首先次在本人面前发火,好像也是唯一一遍。

— Web —

9

推介随便搞!可以用重量级的AngularJS,也可以用轻量级 Backbone + jQuery
等。

您重新联系到自己是一年前。

教程:http://blog.javachen.com/2015/01/06/build-app-with-spring-boot-and-gradle/

对讲机里你的响声依然充满磁性。你没有诉说过往种种,只是问我好不佳。

参考:

反之亦然你问我答。

[1]:Some REST best
practices

如故逗比深情。

[2]:GitHub API
v3

从未十几年的梗塞,往事好像就在前几日。

[3]:tlhunter/consumer-centric-api-design ·
GitHub

您说如今常听”听说爱情回来过”总是听到泪流满面,是或不是老了?

最终附带一个彩蛋:

你说,我谈的多少个女对象我发给你看看,呵呵,开玩笑。

Facebook台球表演:台球1—在线播放

你说,我可以来看望您呢?我不置可不可以。

不过,大家最终仍然尚未相会。

10

人生匆匆。

稍微世易时移。

稍稍人她出现她开走就是那般自自然然。

就好像今天,你又毫无预兆的毁灭了。

下两回的产出会不会又是一个十年?

若是是,那么下次自家一定要记得问您:嘿,这一个年,你仍能吗?

感谢你丰裕了我人生的记念。

谢谢您用一首歌诠释了您的不得已深情。

本身想告知您,我得以淡忘记念里的不在少数人,但自己历来平素没有忘掉过您,忘记过我们冒傻气的后生年少。