webWeb前端之路让前端飞

从编程小白到全栈开发:服务端的一些概念

2017-10-24  本文已影响578人  一斤代码

幕后英雄总是容易被大家所忽略。在这看脸的世界,大家都以为脸就是全部了,你总是相信你所看到的就是事物的全部,可是你往往看到的只是冰山的一角而已。

现在,基于互联网的各种Web应用、桌面应用、手机app之类的程序,很少会只有前端没有后端了。尤其在这从IT(信息技术)转向DT(数据技术)的时代,用户产生的数据是一种宝贵的资源,所以即便有些程序在前端就能完成所有的工作,但是开发者还是会特意在前端程序中添加一些例如用户数据收集追踪的功能,然后发往后端进行保存和处理(小白用户别害怕,要习惯,哈哈哈)。

因此,伴随着前端开发的工作,总是有一个有时要比你想象中大的多的后端开发工作需要做。今天呢,我们就来聊聊后端的开发知识,给那些对后端开发还没什么概念的朋友介绍下后端开发到底会涉及到些什么内容、需要捣鼓些什么玩意儿。

我们需要协作和控制的东西

现在的编程,其实更多的像是搭积木的过程,利用好现有的资源,再加上一些自己的创新,组合出符合你预期功能的东西,就是编程。

那么,对于服务器端来说,我们拥有些什么样的"现有资源"?我觉得可能会是这些:

这些资源都提供了某种形式的API,可供我们的代码进行调用。因此,我们只要合理的利用好这些资源,就可以组合出各种丰富的、拥有自身特色的功能。

我们的后端怎么让前端调用?

假设我们已经使用到了上面所说的各种软件API,在后端写出了一大堆眼花缭乱,功能牛X的功能,然而如果你未提供对外的服务接口,那么这种情况就像是做了一个封闭的铁水箱一样,里面的水没有办法取出来,外界的水也没有办法输进去。

所以,我们要给这个铁水箱开上孔、接上管子,某种规格的孔和管子!为什么我们强调需要某种规格呢?这个道理,其实就跟插座和插头一样,如果插头和插座不是按照统一的规格标准来制造,那做好的插头肯定插不进插座里去。俗话说,不以规矩,不成方圆,只有制定好了接入标准,别人才能按照该标准顺利进行接入。

我们通常采用目前最为流行之一的HTTP协议,来开发我们的对外服务接口。下面我们就来了解下关于HTTP的一些必须了解的知识:

URL

什么是URL?

它有个俗气的名字:网址。我们通常对网址的理解,就是一个网页的地址,在浏览器里啪啪啪输入一个网址,就能进入到一个网站的页面。

其实URL它的学名叫做统一资源定位符。从这个名字上,我们能看出,它的关键功能和资源的定位有关。服务器上的资源主要有静态资源,比如各种文件,如网页文件、图片、文本文件、二进制文件等等),以及动态资源,如可执行的代码(PHP,Java,Node.js等写成的动态服务)。每一个资源都有一个唯一的URL来对应,它就像一个精确的门牌号地址一般,根据这个门牌号,肯定能找到一个唯一的资源。

https://www.baidu.com/img/baidu_jgylogo3.gif

比如上面这个URL就是一个典型的静态资源URL,代表的是在百度服务器上一个路径为/img/baidu_jgylogo3.gif的GIF图片。

https://www.baidu.com/s?wd=Apple

而这个URL是百度的搜索服务,它被分配在百度域名的路径/s下。而问号?后面的内容,我们称之为查询字符串(Query String),是传递给这个百度搜索服务的参数,搜索服务根据这个参数来判断你要搜索的内容是什么。

HTTP方法

上面我们讲到每个资源都有自己的URL,那么对于一个资源,HTTP还提供了几个操作该资源的方法,下面的文字有点技术化了,请慢慢的仔细的阅读,以求能读懂它的意思:

以上的8个方法中,GET和POST方法在实际的开发中用的是最频繁的,几乎也是万能方法,学习初期只要学好使用这2个方法,也能一拳打死老师傅了。PUT和DELETE这2个方法是REST接口设计规范流行起来之后,才慢慢开始被使用起来的,增加这2个方法的使用,可以使在对资源的操作语义方面更加清晰。

请求,响应,以及头域

资源在服务器上,我们如果要操作一个资源,简明的流程是这样的:

  1. 请求方先向服务器发起一个资源处理的请求(Request),请求中包含了要操作的资源地址,操作方法等必要信息

  2. 服务器接收在到该请求以后作相应处理

  3. 服务器处理完毕,向请求方发送一个响应(Response),响应中包含了处理的状态,结果数据等信息

另外,请求和响应,都包含有一个头域(Header),它是客户端和服务器端互相传递信息的一种方式:

Accept:text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.8
Connection:keep-alive
Cookie:BAIDUID=0F562A4822E389DF96273D8A5802EA7A:FG=1; BIDUPSID=F53EEB46DE1C2B4FD6507BD2E2CFD261; PSTM=1500717758; 
Host:www.baidu.com
Referer:https://www.baidu.com/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
X-Requested-With:XMLHttpRequest
HTTP/1.1 200 OK
Cache-Control: private
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Tue, 24 Oct 2017 09:59:50 GMT
Expires: Tue, 24 Oct 2017 09:59:50 GMT
Server: BWS/1.0
Tracecode: 35904851770187094026102417
Vary: Accept-Encoding
Content-Length: 78

头域中一般用来传递一些客户端和服务端自身特点和环境相关的信息。如果是要传递用户自定义的参数信息或者服务器端资源数据,则一般采用其他途径,比如查询字符串(Query String)、或请求/响应体(Body)。

总结

这次我们比较粗浅的提了一些服务器端开发的知识,特别是HTTP相关的内容。虽然不多,但是对初次涉及这块领域的朋友来说是必备基础知识。

所以,哪怕只是记住文中的几个关键词,对后续的学习和理解也是非常有帮助的。

了解事物背后的真相。
欢迎关注一斤代码的系列课程《从编程小白到全栈开发》

最近,我决定把简书的打赏功能关闭了(虽然以前也没多少朋友给我打赏,哈哈),同时感谢每一个浏览我文章或给我打赏的朋友。后面我会继续写作高质量的文章给大家,而在文章末尾我会附上一些不那么讨厌的、可能还会比较有用的小广告,希望通过这种方式,在给到大家帮助的同时给自己也增加点小小的收入吧:)


点这里领取阿里云代金券

上一篇下一篇

猜你喜欢

热点阅读