<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          你知道前后端分離開(kāi)發(fā)的原理嗎?

          共 3095字,需瀏覽 7分鐘

           ·

          2021-09-06 02:30

          ??點(diǎn)擊“博文視點(diǎn)Broadview”,獲取更多書(shū)訊

          在Web應(yīng)用開(kāi)發(fā)中,有兩種開(kāi)發(fā)模式:前后端不分離和前后端分離。

          前后端不分離的開(kāi)發(fā)模式耦合度高,適合純網(wǎng)頁(yè)開(kāi)發(fā);前后端分離的開(kāi)發(fā)模式耦合度低,前端可以通過(guò)訪問(wèn)接口來(lái)對(duì)數(shù)據(jù)進(jìn)行增刪改查。所以,前后端分離的開(kāi)發(fā)模式是更被開(kāi)發(fā)者廣泛使用的一種。

          前后端分離主要是指,隨著Web技術(shù)的發(fā)展,采用前端、后端各自獨(dú)立開(kāi)發(fā)的模式,解決前端后端一體化開(kāi)發(fā)所帶來(lái)的互相制約問(wèn)題,提高網(wǎng)站項(xiàng)目開(kāi)發(fā)效率和后續(xù)的可維護(hù)性,同時(shí)可以通過(guò)標(biāo)準(zhǔn)化的Web API為前后端傳遞標(biāo)準(zhǔn)化數(shù)據(jù),如JSON、XML格式的數(shù)據(jù)。

          前后端分離原理

          Django Rest Framework,簡(jiǎn)稱DRF,中文意思是“Django表述狀態(tài)轉(zhuǎn)化框架”,是一款功能強(qiáng)大、基于Django框架開(kāi)發(fā)的、用于構(gòu)建符合RESTful風(fēng)格Web API的、前后端分離的商業(yè)化開(kāi)發(fā)工具包。

          它是免費(fèi)開(kāi)源的,被一些大型IT企業(yè)所使用,是目前非常流行的商業(yè)級(jí)技術(shù)框架之一。

          Django的Rest Framework前后端分離實(shí)現(xiàn)原理如圖1所示。

          圖1  前后端分離實(shí)現(xiàn)原理

          瀏覽器端,采用自有客戶端技術(shù)框架(如Vue.js、ExtJS、EasyUI、DWZ等)實(shí)現(xiàn)獨(dú)立開(kāi)發(fā),并與服務(wù)器端進(jìn)行資源調(diào)用。

          服務(wù)器端,整體框架建立在Django框架基礎(chǔ)上,借助DRF技術(shù)實(shí)現(xiàn)數(shù)據(jù)、文件的交換使用。

          DRF的核心是提供RESTful規(guī)范的API接口,為瀏覽器端提供數(shù)據(jù)和文件訪問(wèn)支持。

          這里的數(shù)據(jù)和文件統(tǒng)稱為數(shù)據(jù)資源。

          為了讓瀏覽器端接收J(rèn)SON或XML格式的數(shù)據(jù),該框架事先需要進(jìn)行數(shù)據(jù)序列化處理。接收到瀏覽器端發(fā)送過(guò)來(lái)的數(shù)據(jù)后,需要對(duì)其進(jìn)行反序列化處理才能使用。

          前后端分離方式與前后端不分離方式之間的一個(gè)重要的區(qū)別是,前者不進(jìn)行模板渲染便將其返回給瀏覽器,僅提供標(biāo)準(zhǔn)結(jié)構(gòu)的數(shù)據(jù)資源。

          RESTful

          REST的全稱為Representational State Transfer,中文意思是“表述狀態(tài)轉(zhuǎn)化”。

          REST于2000年在Roy Fielding的博士論文中首次出現(xiàn),Roy Fielding是HTTP規(guī)范的主要編寫(xiě)者之一。

          在目前主流的3種Web服務(wù)交互方案中,REST相比于SOAP(Simple Object Access Protocol,簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)及XML-RPC更加簡(jiǎn)單明了,無(wú)論是對(duì)URL進(jìn)行處理還是對(duì)Payload進(jìn)行編碼,REST都傾向于用更加簡(jiǎn)單、輕量的方法進(jìn)行設(shè)計(jì)和實(shí)現(xiàn)。

          值得注意的是,REST并不是一個(gè)明確的標(biāo)準(zhǔn),而更像一種設(shè)計(jì)風(fēng)格。符合REST風(fēng)格的架構(gòu)方式就是RESTful。

          1.?dāng)?shù)據(jù)資源與URL

          REST需要表述的是數(shù)據(jù)資源,包括數(shù)據(jù)庫(kù)中的記錄、各種文件等。要讓數(shù)據(jù)資源被瀏覽器訪問(wèn),需要提供一個(gè)唯一標(biāo)識(shí)。在Web中,這個(gè)唯一標(biāo)識(shí)就是URL(Uniform Resource Locator,統(tǒng)一資源定位符)。比如,假設(shè)127.0.0.1:8000/use/1中的1指向應(yīng)用use下的某一條數(shù)據(jù)記錄,則整個(gè)URL就是一個(gè)數(shù)據(jù)資源地址。

          2.統(tǒng)一資源接口

          有了數(shù)據(jù)資源和訪問(wèn)地址后,RESTful為瀏覽器端的訪問(wèn)提供了4種常用HTTP標(biāo)準(zhǔn)訪問(wèn)方式,用于傳遞數(shù)據(jù)。

          • GET:從服務(wù)器端獲取數(shù)據(jù)資源。

          • POST:在服務(wù)器端建立一個(gè)數(shù)據(jù)資源。

          • PUT:在服務(wù)器端更新數(shù)據(jù)資源。

          • DELETE:從服務(wù)器端刪除指定的數(shù)據(jù)資源。

          3.常用返回狀態(tài)碼

          HTTP的返回狀態(tài)碼是純數(shù)字的,如404、200等,不太容易理解,RESTful提供了統(tǒng)一標(biāo)準(zhǔn)的文字標(biāo)識(shí)符,如表1所示,更有助于使用人員理解。

          表1 常用返回狀態(tài)碼對(duì)應(yīng)的文字識(shí)別符

          關(guān)于前后端分離的內(nèi)容就先分享到這里,歡迎閱讀《Python Django Web從入門(mén)到項(xiàng)目實(shí)戰(zhàn)(視頻版)》一書(shū),繼續(xù)了解更多關(guān)于Django Web開(kāi)發(fā)的內(nèi)容



          ▊《Python Django Web從入門(mén)到項(xiàng)目實(shí)戰(zhàn)(視頻版)

          劉瑜 安義 


          • 經(jīng)驗(yàn)豐富的寫(xiě)作團(tuán)隊(duì),本書(shū)作者皆有20多年的實(shí)戰(zhàn)經(jīng)驗(yàn),并有雄厚的寫(xiě)作基礎(chǔ),將理論與實(shí)踐完美地結(jié)合在一起。

          • 將故事融入于書(shū)中,增加了本書(shū)的閱讀情趣,便于讀者更好地吸收重點(diǎn)知識(shí)。

          • 附贈(zèng)豐富的配套學(xué)習(xí)資源:1個(gè)完整的商業(yè)項(xiàng)目代碼案例、80多段案例代碼、30多個(gè)視頻(免費(fèi)贈(zèng)送)、習(xí)題冊(cè)及答案手冊(cè)(免費(fèi)贈(zèng)送)。

          • 貼心的互動(dòng)教學(xué):QQ社群、微信公眾號(hào)在線服務(wù),作者及時(shí)反饋!

          Python的Django框架是目前流行的一款重量級(jí)網(wǎng)站開(kāi)發(fā)框架,具備簡(jiǎn)單易學(xué)、搭建快速、功能強(qiáng)大等特點(diǎn)。本書(shū)從簡(jiǎn)單的HTML、CSS、JavaScript開(kāi)始介紹,再到Django的基礎(chǔ)知識(shí),融入了大量的代碼案例、重點(diǎn)提示、圖片展示,做到了手把手教授。本書(shū)基于Django 3.0.7版本、Python 3.8.5版本、Rest Framework 3.11.1版本、Vue.js 2.6.10版本、數(shù)據(jù)庫(kù)MySQL 80版本進(jìn)行講解。本書(shū)還提供了一個(gè)商業(yè)級(jí)別的項(xiàng)目案例,采用目前主流的前后端分離開(kāi)發(fā)技術(shù),以便讀者可以體驗(yàn)正式項(xiàng)目的開(kāi)發(fā)過(guò)程。熟練掌握本書(shū)內(nèi)容后,讀者將達(dá)到中級(jí)Web項(xiàng)目開(kāi)發(fā)工程師的技術(shù)水平

          五折專享,快快掃碼搶購(gòu)吧!)


             


          如果喜歡本文
          歡迎 在看留言分享至朋友圈 三連


           熱文推薦  





          ▼點(diǎn)擊閱讀原文,查看本書(shū)詳情~
          瀏覽 18
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日屌网| 国产AV 无码 乱噜噜 | 99小视频在线观看 | 久久久久无码精品国产91福利 | 欧美日本一道本一区二区三区 |