聊一下restful api

首先,浏览器要想从后台拿东西,肯定是要发请求的,这个请求就是http请求,举一个最简单的例子,从浏览器输入网址,敲回车,访问一个页面。这个背后的过程,其实就是浏览器发送了一个get请求到后台的web server,然后后台程序中的路由部分,去对这个get请求进行了处理,然后把html页面作为响应返回给了browser,browser接受到这个响应,就直接把html渲染成页面展示出来。这里需要注意的是,发送http请求的方式有很多种,在浏览器里敲网址去发送get请求这一种方式,是浏览器自带的,这种方式一定会把响应体渲染到页面上去。

当然发送http请求还有其他的方式,比如通过提交form表单,也可以发送,这是比较常用的第二种方式。这第一种方式和第二种方式,都是浏览器自带的,是web开发中最基本也是最常用的发送请求方式。通常来说,第一种是get请求,第二种一般会是post请求。在web开发初期,http的请求方法里面,只有这两种。 

在这个时候,页面一般都是通过后端程序生成出来的。也就是ssr,server side rendering,前端页面其实是配合后端程序用模板语言来写,毕竟如果你前端用html来写,那就是静态的,内容完全不会随着交互变的。这样做确实可以做到生成动态页面了,但是有一个问题,就是,不管你页面内容改动有多少,哪怕就是一个字的改动,这种方式,都会重新去生成整张页面,浏览器必须要去渲染整张页面,也就是1%的改动会牵扯到另外没有必要的99%的重复的部分,重新再渲染一遍。这种方式,肯定是不合理的,所以后来就诞生了ajax。ajax是浏览器的一个新功能,可以让浏览器异步发送http请求,并局部刷新页面。这样一来,就终于解决了以前必须渲染整张页面的问题。   

可能这个ajax功能的开发的初衷,是为了解决动态页面生成时必须渲染整张页面的问题。然而,它的诞生,从整个web开发结构上,都产生了颠覆性的影响。回想一下上面所讲到的,在ssr时,写页面要写模板语言,否则如果写html页面的话,是没办法动态的。然而ajax的诞生,改变了这一点,你可以尽情的写html页面,需要动态改变的内容,通过ajax向后台发送请求,拿回来的数据通过js更新到页面上即可。于是乎,web开发前后端分离的结构就正式登场了。前端人员可以正常写原生的html了,不必再拘泥于后端规定要用哪一种模板语言。这样前后端的开发,只要大家统一好,需要变化的内容,规定一下数据怎么拿怎么传,其他都可以完全分离开发了。   

事情发展到这里,前后端已经可以分离开发了。之前前后端必需坐着靠着,最好就隔壁隔,这样交流起来方便,为啥?因为要不停的问这个变量叫什么名字,那个变量叫什么名字,不然前端不认啊。还有很多其他需要互相问的地方,总之就是很多。那么现在,不用再坐着靠这么近了,一个在3楼一个在2楼也没事,因为只要你后端把数据格式定好了,基本就ok了。然后,就产生了这么一个情况,既然不在一层也行,那是不是不在一个楼里也行,是不是不在一个城市,甚至一个国家也行?答案是只要你把数据交互格式规定好,就行。另外,前端只要能从后台拿数据就行了,前端可以有很多种实现,不管你是用html还是js还是别的,只要你能发http请求,能拿回数据进行局部更新,那你前端怎么实现,后端根本不关心。既然是这样,那么就很容易联想到下面这一点了,我公司里只进行后端开发,想要用我功能的人,你自己去写一套前端就行了。那我公司以前是卖软件的,要卖就卖成套,开箱即用,那么现在我公司是不是可以只卖后端,买的人只要加工一个前端套在上面不就行了?这样,连整个销售方式都被影响了。   

ok,既然是决定这么做了,那我公司除了把后端写好,是不是还要写好一个说明书,告诉买的人,你在套前端的时候,数据该这么拿该那么拿,也就是要把api写好给用户。打个比方,你想要创建一个用户,就发送这个a请求,它的方法是post,它的地址是blablabla...到这里都没毛病,用户也能看的懂,万事大吉。然而问题总是会不断出现,这样做的问题是什么呢,假设你想买一套后端程序来用,自己套前端,那么你就要读它的api,然后下一次我又买了一套其他公司的后端,又要读它的api,这两个api看起来差不多,但又完全不一样,真是烦死了,反正都是差不多实现的同一个功能,你们就不能都遵循一个规范来开发吗?这么说吧,你们AB两个公司的写的api,从组成形式上都不一样,那我用户就要从头读起,如果你们能遵循一个规范来,比如存数据就是用post,别A公司用post,B公司用get,那我读起来,也许就省了50%的力气吧。鉴于这样的需求,于是一套规范就被人们规定出来了,它就是restful api。 

> restful api 规定了四个请求方法,get post put 和 delete,这四个请求方法分别,后端该做什么,规定了uri就是获取资源的唯一路径。等等。原来浏览器里面只认识get和post方法,现在为了响应这个规范,http协议,浏览器,以及web服务器,都分别把这几个请求方法加到了自己的功能里面去。所以现在,大家都遵循rest api方式去开发后端,就解决了上面说的那个问题了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343