❶ 網站什麼的要分前端和後端的是什麼意思
網站的前端技術指:網站的視覺設計及網站的前台代碼實現,包括基本的HTML和CSS以及JavaScript/ajax等。而網站後端技術則指:web伺服器上編寫程序的相關技術。
前端開發是創建Web頁面或app等前端界面呈現給用戶的過程,通過HTML,CSS及JavaScript以及衍生出來的各種技術、框架、解決方案,來實現互聯網產品的用戶界面交互。
服務端編程是指在web伺服器上編寫程序並使之正常運行。在B/S模式下,當用戶下載一個網頁時,如果網頁中包含服務端腳本程序,web伺服器將首次執行網頁中的腳本程序,然後把執行的結果網頁發送到客戶端瀏覽器顯示。
(1)如何查看網站後端技術架構教程擴展閱讀:
前端涉及的關鍵技術:
1、HTML技術
HTML是一種標記語言,能夠實現Web頁面並在瀏覽器中顯示。HTML5作為HTML的最新版本,引入了多項新技術,大大增強了對於應用的支持能力,使得Web技術不再局限於呈現網頁內容。
2、CSS技術
級聯樣式表(Cascading Style Sheet)簡稱「CSS」,是用來進行網頁風格設計的。比如,如果想讓鏈接字未點擊時是藍色的,當滑鼠移上去後字變成紅色的且有下劃線,這就是一種風格。
3、JavaScript
是一種由Netscape的LiveScript發展而來的原型化繼承的面向對象的動態類型的區分大小寫的客戶端腳本語言,主要目的是為了解決伺服器端語言,比如Perl,遺留的速度問題,為客戶提供更流暢的瀏覽效果。通過JavaScript實現相應的效果和交互。
❷ java項目中怎樣看使用的是什麼框架啊
1、首先使用開發工具打開以前練手的項目,如下圖所示。
❸ 詳細介紹Web前端與後端有什麼區別(包括定義、特點、所用到的技術等(500字)
1.什麼是前端開發?
前端,也稱為「客戶端開發」,簡單來說,你可以在應用程序或網站的屏幕上看到的所有內容都屬於前端。
通俗點說:web的本意是蜘蛛網和網的意思,在網頁設計中我們稱為網頁的意思。現廣泛譯作網路、互聯網等技術領域。表現為三種形式,即超文本(hypertext)、超媒體(hypermedia)、超文本傳輸協議(HTTP)等,包括Web頁面的結構、Web的外觀視覺表現以及Web層面的交互實現。
1.1 網站和移動應用的前端
讓我們考慮一個現實的例子:你正在訪問的網站。內容設計、圖像、段落和線條之間的間距,左上角的公司徽標,以及右下角的小通知按鈕——所有這一切都是前端。
移動應用的前端與網站相同。例如,你在移動或 Web 應用中看到的內容,按鈕、圖像是前端的一部分。此外移動屏幕還具有觸摸響應功能,因此當應用響應你所做的所有手勢時,需要進行縮放放大/縮小、雙擊、滑動等操作。
前端開發人員構建所有的這些。它們創造了你在屏幕上看到的外觀和觸摸到的體驗。
Ionic,Swift,Kotlin,Bootstrap,Angular,Vue,jQuery,React.js 是用於前端開發的一些工具和技術。
1.2 物聯網的前端
連接到互聯網的任何對象都是IoT(物聯網)設備。你可能在想物聯網設備的前端如何工作?任何智能設備,如智能冰箱、遠程 PoS 系統、智能手錶、智能錢包,都需要用戶可以與之交互以操作設備的「東西」。因此,「某物」是一種互動媒介,其元素就是物聯網的前端。
物聯網設備沒有前端的說法,但設備包含一個固件,其行為類似於移動應用程序中的前端。此外該固件可以用C、C++、Lua、Python 和 JavaScript 等語言編寫。
另外還有物聯網設備的 UI/UX 設計和實現。
2.什麼是後端開發?
後端,也稱為「伺服器端開發」,也就是在系統「後面」所發生的事情。同樣,在後端伺服器和瀏覽器或應用程序之間存儲網站、應用數據和中間媒介的伺服器都屬於後端。簡單來說,在應用程序或網站的屏幕上看不到的所有東西都是前端的後端。它更多的是與資料庫進行交互以處理相應的業務邏輯。需要考慮的是如何實現功能、數據的存取、平台的穩定性與性能等。
2.1 網站和移動應用後端
網站的後端需要設置伺服器,存儲和檢索數據,以及將這些伺服器與前端進行連接的介面。如果說前端開發人員梗關注網站的外觀,後端開發人員則更更關注網站的速度、性能和響應能力,後端通過編碼、雲 API 和資料庫進行集成。
就像前端一樣,移動應用的後端開發在各個方面都與網站後端相同。此外,你為移動應用設置後端伺服器的選項包括:雲計算(AWS,Firebase)定製伺服器或 MBaaS(移動後端即服務)。
Ruby,Apache,Nginx,PHP,MySQL,MongoDB 等用於後端開發的工具和技術很少。
2.2 物聯網後端
物聯網後端最重要的組成部分之一是雲後端。顯然大多數物聯網設備都依賴雲伺服器對數據進行上傳和下載,並將其處理為動作。
如果我們談論高級物聯網解決方案,後端開發可以擴大到 AI(人工智慧)和 ML 等功能(機器學習)。
用於物聯網項目的後端技術是Amazon IoT,Google Cloud,MQTT Broker,IFTTT等等。
綜上所述,說通俗一點:
web前端分為網頁設計師、網頁美工、web前端開發工程師。
首先網頁設計師是對網頁的架構、色彩以及網站的整體頁面代碼負責;網頁美工只針對UI這塊的東西,比如網站是否做得漂亮;web前端開發工程師是負責交互設計的,需要和程序員進行交互設計的配合。
web前端需要掌握的有腳本技術javascript DIV+CSS現下最流行的頁面搭建技術,ajax和jquery以及簡單的後端程序等。 後端的話可供開發的語言有 asp、php、jsp、.NET 這些後端開發語言的話搭建環境都不一樣
實際的開發過程中,前端、後端開發人員的定位如下:
1)前端開發人員:精通JS,能熟練應用JQuery,懂CSS,能熟練運用這些知識,進行交互效果的開發。
2)後端開發人員:會寫Java代碼,會寫SQL語句,能做簡單的資料庫設計,會Spring和iBatis,懂一些設計模式等。
3.前端 Vs 後端有什麼區別?
ok,接近2000字了,應該是回答了你的問題了,如果有幫助到你,請採納哦,謝謝!
❹ 現在網站前後端主要用什麼技術和框架
web前端分為網頁設計師、網頁美工、web前端開發工程師
首先網頁設計師是對網頁的架構、色彩以及網站的整體頁面代碼負責
網頁美工只針對UI這塊兒的東西,比如網站是否做的漂亮
web前端開發工程師是負責交互設計的,需要和程序猿進行交互設計的配合。
web前端需要掌握的有腳本技術javascript DIV+CSS現下最流行的頁面搭建技術,ajax和jquery以及簡單的後端程序等。 後端的話可供開發的語言有 asp、php、jsp、.NET 這些後端開發語言的話搭建環境都不一樣,具體如果你想學的話看是想從事前端部分還是後端程序部分。後端開發如果有一定的條件的話可以轉為軟體開發。不過要有一定的語言基礎,類似java語言。C#等。關鍵是看你的興趣愛好。
這個到後期不會區分這么細,做前端到後期也會懂一些後端的技術,反之,後端也是。
在我們實際的開發過程中,我們當前這樣定位前端、後端開發人員。
1)前端開發人員:精通JS,能熟練應用JQuery,懂CSS,能熟練運用這些知識,進行交互效果的開發。
2)後端開發人員:會寫Java代碼,會寫SQL語句,能做簡單的資料庫設計,會Spring和iBatis,懂一些設計模式等。
現在來看,我們對前後端的要求還是蠻低的,尤其是後端,新員工經過培訓之後都是可以參與到後端開發的,沒有太高的技術門檻,唯一需要做的就是先變成熟練工種,這個階段沒有涉及到設計模式、架構、效率等一些列問題。
Web前端: 顧名思義是來做Web的前端的。我們這里所說的前端泛指Web前端,也就是在Web應用中用戶可以看得見碰得著的東西。包括Web頁面的結構、Web的外觀視覺表現以及Web層面的交互實現。
Web後端:後端更多的是與資料庫進行交互以處理相應的業務邏輯。需要考慮的是如何實現功能、數據的存取、平台的穩定性與性能等。
前端、後端的技術要求:
Web前端:
1)精通HTML,能夠書寫語義合理,結構清晰,易維護的HTML結構。
2)精通CSS,能夠還原視覺設計,並兼容業界承認的主流瀏覽器。
3)熟悉JavaScript,了解ECMAScript基礎內容,掌握1~2種js框架,如JQuery
4)對常見的瀏覽器兼容問題有清晰的理解,並有可靠的解決方案。
5)對性能有一定的要求,了解yahoo的性能優化建議,並可以在項目中有效實施。
6)......
Web後端:
1)精通jsp,servlet,java bean,JMS,EJB,Jdbc,Flex開發,或者對相關的工具、類庫以及框架非常熟悉,如Velocity,Spring,Hibernate,iBatis,OSGI等,對Web開發的模式有較深的理解
2)練使用oracle、sqlserver、mysql等常用的資料庫系統,對資料庫有較強的設計能力
3)熟悉maven項目配置管理工具,熟悉tomcat、jboss等應用伺服器,同時對在高並發處理情況下的負載調優有相關經驗者優先考慮
4)精通面向對象分析和設計技術,包括設計模式、UML建模等
5)熟悉網路編程,具有設計和開發對外API介面經驗和能力,同時具備跨平台的API規范設計以及API高效調用設計能力
6)......
❺ 急!關於網站後台 高分求助
有後台的程序必須用動態網頁語言(asp;php....)這些語言設計。
而你只會html肯定是不能設計出有後台的網站。。
像你這樣。有一點基礎的。最好去網上搜和你目標差不多的動態源代碼。下載到本地。用你學的技術修改為你自己的風格。這樣就省事多了。
嗯。就這樣了。還有不明白的。可以網路HI我。。不一定在線哦。
❻ 後端開發都需要那些技術
後端主要是讓伺服器、應用、資料庫能夠彼此交互,需要考慮如何實現功能、數據的存取、平台的穩定性與性能等。常用的腳本語言有php、 java 、 python、C、C++等,以java為例主要用到的技術包括但不限於Struts、spring、springmvc 、Hibernate、Http協議、Servlet、Tomcat伺服器等
第一,Servlet技術。Servlet技術是Java後端的重要技術之一,作為Java Web開發的核心組件,Servlet承擔了Web MVC結構中的核心作用(功能導航)。傳統的Model2結構(Servlet+JavaBean+JSP)雖然在目前已經很少使用了,但是Web開發的基本結構依然沒有改變。Servlet技術的應用涉及到Web容器、會話(HttpSession)、安全、同步、Web應用部署等相關內容。
第二,Java操作資料庫。後端開發免不了與資料庫打交道,所以掌握Java的資料庫操作是一個基本要求。Java操作資料庫涉及到的內容有JDBC、JNDI、RMI、DAO等內容,其中使用RMI+JDBC是構建java資料庫開發的一個常見的解決方案,而JNDI則是對各種資源的定義。
第三,Spring框架。Spring+SpringMVC+MyBatis是目前一個比較常見的後端開發方案,Spring的原理就是構建了一個「業務組件容器」,SpringMVC則是Web MVC的一個具體實現框架,而MyBatis則是一個基於DAO的實現框架。從性能的角度來說,Spring是EJB的輕量級解決方案,得到了廣大Java程序員的歡迎。如果有Servlet以及資料庫操作的基礎,那麼學習這幾個框架的使用是一件非常輕松的過程。雖然基於Spring的編程比較方便,但是Spring也有缺點,比如配置文件過於繁瑣。
第四,結合hadoop構建Java的分布式開發。Java的分布式開發是提高Java後端處理能力的重要內容,RMI是Java分布式開發比較常見的解決方案,學習起來也比較簡單
❼ 前後端分離方案以及技術選型
作者:關開發
一.什麼是前後端分離?
理解前後端分離大概可以從3個方面理解:
1. 交互形式
2. 代碼組織形式
3. 開發模式與流程
1.1 交互形式
前後端不分離
後端將數據和頁面組裝、渲染好了之後,向瀏覽器輸出最終的html;瀏覽器接收到後會解析html,解析引入的css、執行js腳本,完成最終的頁面展示。
前後端分離
後端只需要和前端約定好接收以及返回的數據格式(一般用JSON格式),向前端提供API介面。前端就可以通過HTTP請求調用API的方式進行交互。前端獲取到數據後,進行頁面組裝、渲染,最終在瀏覽器呈現。
1.2 代碼組織形式
前後端不分離
在web應用早期的時候,前端頁面以及後台業務數據處理的代碼都放在一個工程下,甚至放在同一目錄下,前端頁面夾雜著後端代碼。前、後端開發工程師都需要把整套代碼導入開發工具才能開發。此階段下前後端代碼以及工作耦合度太高,前端不能獨立開發和測試,後端人員也要依賴前端完成頁面後才能完成開發。最糟糕的情況是前端工程師需要會後端模板技術(jsp),後端工程師還要會點前端技術,需要口頭說明頁面數據介面,才能配合完成開發。否則前端只能當一個「切圖仔」,只輸出HTML、CSS、以及很少量與業務邏輯無關的js;然後由後端轉化為後端jsp,並且還要寫業務的js代碼。
前後端分離
前後端代碼放在不同的工程下,前端代碼可以獨立開發,通過mock/easy-mock技術模擬後端API服務可以獨立運行、測試;後端代碼也可以獨立開發,運行、測試,通過swagger技術能自動生成API文檔供前端閱讀,還可以進行自動化介面測試,保證API的可用性,降低集成風險。
1.3 開發模式與流程
前後端不分離
在項目開發階段,前端根據原型和UI設計稿,編寫HTML、CSS以及少量與業務無關的js(純效果那些),完成後交給後台人員,後台人員將HTML轉為jsp,並通過JSP的模板語法進行數據綁定以及一些邏輯操作。後台完成後,將全部代碼打包,包含前端代碼、後端代碼打成一個war,然後部署到同一台伺服器運行。頂多做一下動靜分離,也就是把圖片、css、js分開部署到nginx。
具體開發流程如下:圖略
前後端分離
實現前後端分離之後,前端根據原型和UI設計稿編寫HTML、CSS以及少量與業務無關的js(純效果那些),後端也同時根據原型進行API設計,並與前端協定API數據規范。等到後台API完成,或僅僅是API數據規范設定完成之後。前端即可通過HTTP調用API,或通過mock數據完成數據組裝以及業務邏輯編寫。前後端可以並行,或者前端先行於後端開發了。
具體開發流程如下:圖略
二、前後端分離的好處與壞處。
從上面3個方面對比了之後,前後端分離架構和傳統的web架構相比,有很大的變化,看起來好處多多。到底是分還是不分,我們還是要理性分析是否值得才去做。
從目前應用軟體開發的發展趨勢來看,主要有兩方面需要注意:
· 越來越注重用戶體驗,隨著互聯網的發展,開始多終端化。
· 大型應用架構模式正在向雲化、微服務化發展。
我們主要通過前後端分離架構,為我們帶來以下四個方面的提升:
· 為優質產品打造精益團隊
通過將開發團隊前後端分離化,讓前後端工程師只需要專注於前端或後端的開發工作,是的前後端工程師實現自治,培養其獨特的技術特性,然後構建出一個全棧式的精益開發團隊。
· 提升開發效率
前後端分離以後,可以實現前後端代碼的解耦,只要前後端溝通約定好應用所需介面以及介面參數,便可以開始並行開發,無需等待對方的開發工作結束。與此同時,即使需求發生變更,只要介面與數據格式不變,後端開發人員就不需要修改代碼,只要前端進行變動即可。如此一來整個應用的開發效率必然會有質的提升。
· 完美應對復雜多變的前端需求
如果開發團隊能完成前後端分離的轉型,打造優秀的前後端團隊,開發獨立化,讓開發人員做到專注專精,開發能力必然會有所提升,能夠完美應對各種復雜多變的前端需求。
· 增強代碼可維護性
前後端分離後,應用的代碼不再是前後端混合,只有在運行期才會有調用依賴關系。應用代碼將會變得整潔清晰,不論是代碼閱讀還是代碼維護都會比以前輕松。
那麼前後端分離有什麼不好的地方嗎?我目前是沒有想到,除非你說會增加前端團隊的配備,後端工程師會變的不全能。。。
二、前後端分離架構方案。
實現前後端分離,主要是前端的技術架構變化較大,後端主要變為restfull 風格API,然後加上Swagger技術自動生成在線介面文檔就差不多了。
對於目前用於前後端分離方案的前端技術架構主要有兩種:
· 傳統SPA
· 服務端渲染SSR
2.1 傳統SPA
傳統SPA指的是單頁面應用,也就是整個網站只有一個頁面,所有功能都通過這一個頁面來呈現。因為一個人的肉眼,某一個時間點看一個頁面,既然如此何必要不同功能做多個頁面呢?只保留一個頁面作為模板,然後通過路由跳轉來更新這個模板頁面的內容不就可以了嗎?確實如此,現在通過reac全家桶、tvue全家桶,模塊化、路由、wabpack等技術輕而易舉就能實現一個單頁面應用。
單頁面應用的運行流程
1.用戶通過瀏覽器訪問網站url
2.單頁面的html文件(index.html)被下載到瀏覽器,接著下載html裡面引用的css,js。
3.css,js下載到瀏覽器完成之後,瀏覽器開始解析執行js向後端服務非同步請求數據。
4.請求數據完成後,進行數據綁定、渲染,最終在用戶瀏覽器呈現完整的頁面。
2.2 服務端渲染
服務端渲染的方案指的是數據綁定,渲染等工作都放在服務端完成,服務端向瀏覽器輸出最終的html。大家看完這個是不是有個疑問,這不是又回到了前後端不分離的時代了嗎?答案是否定的,因為這里的服務端是用來執行前端數據綁定、渲染的,也就是把瀏覽器的一部分工作分擔到了服務端。而目前具備這只種能力的服務端是NodeJs服務端。
它的原理其實就是在瀏覽器與前端代碼中間插入了一個NodeJs服務端。瀏覽器請求前端頁面時,會先經過NodeJS服務端,由NodeJs去讀取前端頁面,並執行非同步後端API,獲取到數據後進行頁面數據綁定,渲染等工作,完成一個最終的html然後返回瀏覽器,最後瀏覽器進行展示。
服務端渲染應用的運行流程:
1.用戶通過瀏覽器訪問網站url
2.NodeJS服務端接收到請求,讀取到對應的前端html,css,js。
3.NodeJS解析執行js向後端API非同步請求數據。
4.NodeJs請求數據完成之後,進行數據綁定、渲染,得到一個最終的html。
5.NodeJs向瀏覽器輸出html,瀏覽器進行展示。
PS:其實本質就是把前端編寫成一個nodeJs的服務端web應用。實施服務端渲染後,我們最終運行的是一個Nodejs服務端應用。而單頁面應用是把靜態頁面部署到靜態資源伺服器進行運行。
看到這里,你是否又有疑問,為什麼要這么麻煩搞服務端渲染呢?
2.3 SPA與服務端渲染方案對比
SPA的優點是開發簡單,部署簡單;缺點是首次載入較慢,需要較好的網路,不友好的SEO。
so,以下就是使用服務端渲染的理由了(摘取vue官方說法):
與傳統 SPA (單頁應用程序 (Single-Page Application)) 相比,伺服器端渲染 (SSR) 的優勢主要在於:
· 更好的 SEO,由於搜索引擎爬蟲抓取工具可以直接查看完全渲染的頁面。
請注意,截至目前,Google 和 Bing 可以很好對同步 JavaScript 應用程序進行索引。在這里,同步是關鍵。如果你的應用程序初始展示 loading 菊花圖,然後通過 Ajax 獲取內容,抓取工具並不會等待非同步完成後再行抓取頁面內容。也就是說,如果 SEO 對你的站點至關重要,而你的頁面又是非同步獲取內容,則你可能需要伺服器端渲染(SSR)解決此問題。
· 更快的內容到達時間 (time-to-content),特別是對於緩慢的網路情況或運行緩慢的設備。
無需等待所有的 JavaScript 都完成下載並執行,才顯示伺服器渲染的標記,所以你的用戶將會更快速地看到完整渲染的頁面。通常可以產生更好的用戶體驗,並且對於那些「內容到達時間(time-to-content) 與轉化率直接相關」的應用程序而言,伺服器端渲染 (SSR) 至關重要。
使用伺服器端渲染 (SSR) 時還需要有一些權衡之處:
· 開發條件所限。瀏覽器特定的代碼,只能在某些生命周期鉤子函數 (lifecycle hook) 中使用;一些外部擴展庫 (external library) 可能需要特殊處理,才能在伺服器渲染應用程序中運行。
· 涉及構建設置和部署的更多要求。與可以部署在任何靜態文件伺服器上的完全靜態單頁面應用程序 (SPA) 不同,伺服器渲染應用程序,需要處於 Node.js server 運行環境。
· 更多的伺服器端負載。在 Node.js 中渲染完整的應用程序,顯然會比僅僅提供靜態文件的 server 更加大量佔用 CPU 資源 (CPU-intensive - CPU 密集),因此如果你預料在高流量環境 (high traffic) 下使用,請准備相應的伺服器負載,並明智地採用緩存策略。
以vue為例,實施服務端渲染可以查看官方指南: https://ssr.vuejs.org ,或選擇Nuxt.js
2.4 預渲染技術
如果你調研伺服器端渲染 (SSR) 只是用來改善少數營銷頁面(例如 /, /about, /contact 等)的 SEO,那麼你可能需要預渲染。無需使用 web 伺服器實時動態編譯 HTML,而是使用預渲染方式,在構建時 (build time) 簡單地生成針對特定路由的靜態 HTML 文件。優點是設置預渲染更簡單,並可以將你的前端作為一個完全靜態的站點。
如果你使用 webpack,你可以使用 prerender-spa-plugin 輕松地添加預渲染。它已經被 Vue 應用程序廣泛測試 - 事實上,作者是 Vue 核心團隊的成員。
prerender-spa-plugin: https://github.com/chrisvfritz/prerender-spa-plugin
三、前後端分離技術選型
- artTemplate + bootstrap(不推薦, 不算完全前後端分離)
- vue全家桶(推薦)
- react全家桶 (推薦,生態全)
❽ 目前流行的前後端架構究竟應該怎麼搞
一般而言:前端的技術框架是: vue全家桶+nodejs後端的技術框架是:spring全家桶(springboot,springcloud)等推薦看下傳智播客的相關課程很高興您能一直採納我的回答,希望一直為您提供幫助
❾ 後端網路架構
本文概述了伺服器、資料庫、路由,以及在客戶端發出請求和收到響應之間發生的任何其他事情。
軟體工程師似乎總是在討論他們應用程序的前端和後端。但這到底是什麼意思?
前端是在客戶端執行的代碼。這些代碼(通常是HTML、CSS和JavaScript)在用戶的瀏覽器中運行並創建用戶界面。
後端是在伺服器上運行的代碼,它接收來自客戶端的請求,並包含將適當的數據送回給客戶端的邏輯。後端還包括資料庫,它將持久地存儲應用程序的所有數據。本文重點介紹伺服器端的硬體和軟體,使之成為可能。
如果你想復習一下這些話題,可以回顧一下 HTTP[1] 和 REST[2] 。這些是為客戶和伺服器之間的請求-響應循環提供結構的主要約定。
讓我們先回顧一下客戶端和伺服器的關系,然後我們就可以開始把所有的碎片放在一起了
客戶端是向後端發送請求的任何東西。它們通常是瀏覽器,為HTML和JavaScript代碼提出請求,它們將執行這些代碼來向終端用戶顯示網站。然而,有許多不同類型的客戶端:它們可能是一個移動應用程序,一個運行在其他伺服器上的應用程序,甚至是一個支持網路的智能設備。
後端是處理傳入的請求並生成和發送響應給客戶端所需的所有技術。這通常包括三個主要部分。
伺服器只是一台聽從傳入請求的計算機。盡管有一些機器是為這一特定目的而製造和優化的,但任何連接到網路的計算機都可以充當伺服器。事實上,在開發應用程序時,你經常使用你自己的計算機作為伺服器。
伺服器運行一個應用程序,其中包含如何根據 HTTP verb[3] 和 Uniform Resource Identifier (URI)[4] .來響應各種請求的邏輯。HTTP verb和URI的配對被稱為路由,根據請求對它們進行匹配被稱為路由。
這些處理函數中的一些將是中間件。在這里,中間件是指在伺服器接收請求和發送響應之間執行的任何代碼。這些中間件函數可能會修改請求對象,查詢資料庫,或以其他方式處理收到的請求。中間件函數通常通過將控制權傳遞給下一個中間件函數來結束,而不是通過發送一個響應。
最終,一個中間件函數將被調用,通過向客戶端發送一個HTTP響應來結束請求-響應循環。
通常,程序員會使用Express或Ruby on Rails等框架來簡化路由的邏輯。現在,只要想一想,每個路由可以有一個或多個處理函數,每當對該路由的請求(HTTP verb和URI)被匹配時就會被執行。
伺服器發回的數據可以有不同的形式。例如,伺服器可能會提供一個HTML文件,以JSON形式發送數據,或者它可能只發回一個[HTTP狀態代碼](HTTP status code)。當你試圖導航到一個不存在的URI時,你可能已經看到了狀態代碼 "404 - Not Found",但還有許多狀態代碼表明伺服器收到請求時發生了什麼。
資料庫通常用在網路應用程序的後端。這些資料庫提供了一個介面,以持久的方式將數據保存在內存中。將數據存儲在資料庫中,既可以減少伺服器CPU主內存的負載,又可以在伺服器崩潰或斷電時檢索到數據。
許多發送到伺服器的請求可能需要進行資料庫查詢。一個客戶可能會請求存儲在資料庫中的信息,或者一個客戶可能會在提交請求時提交數據,以添加到資料庫中。
API是一個明確定義的不同軟體組件之間的通信方法的集合。
更具體地說,Web API是由後端創建的界面:端點的集合和這些端點暴露的資源。
一個網路API的定義是它可以處理的請求類型,這是由它定義的路由決定的,以及客戶在擊中這些路由後可以期望收到的響應類型。
一個Web API可以用來為不同的前端提供數據。由於Web API可以提供數據而不真正指定數據的查看方式,因此可以創建多個不同的HTML頁面或移動應用程序來查看來自Web API的數據。
讓我們把這一切變得更具體一些,以一個客戶向伺服器發出請求時發生的主要步驟為例。
1.Alice 正在SuperCoolShop.com上購物。她點擊了一張她的智能手機的封面圖片,這個點擊事件向http://www.SuperCoolShop.com/procts/66432,發出了一個GET請求。
記住,GET描述了請求的種類(客戶只是要求提供數據,而不是改變什麼)。URI(統一資源標識符)/procts/66432指定客戶正在尋找關於一個產品的更多信息,而這個產品的ID是66432。
SuperCoolShop有大量的產品,以及許多不同的類別來過濾它們,所以實際的URI會比這更復雜。但這是請求和資源標識符工作的一般原則。
2.Alice 的請求穿過互聯網到達SuperCoolShop的一個伺服器。這是整個過程中較慢的一個步驟,因為請求的速度不能超過光速,而且它可能有很長的路程要走。由於這個原因,用戶遍布世界各地的大型網站會有許多不同的伺服器,他們會將用戶引向離他們最近的伺服器
3.正在積極監聽所有用戶的請求的伺服器收到了Alice的請求!
4.匹配這個請求的事件監聽器(HTTP動詞:GET,URI:/procts/66432)被觸發。在請求和響應之間,在伺服器上運行的代碼被稱為中間件。
5.在處理請求時,伺服器代碼會進行資料庫查詢,以獲得關於這個智能手機案例的更多信息。該資料庫包含了Alice想知道的關於這個智能手機外殼的所有其他信息:產品的名稱、產品的價格、一些產品評論,以及一個提供產品圖片路徑的字元串。
6.資料庫查詢被執行,資料庫將請求的數據發回伺服器。值得注意的是,資料庫查詢是這個過程中比較慢的步驟之一。從靜態內存中讀和寫是相當慢的,而且資料庫可能是在與原始伺服器不同的機器上。這個查詢本身可能要穿過互聯網
7.伺服器從資料庫中收到了它所需要的數據,現在它已經准備好構建並向客戶發送其響應。這個響應體包含了瀏覽器所需要的所有信息,以向Alice展示她所感興趣的手機殼的更多細節(價格、評論、尺寸等)。響應頭將包含一個HTTP狀態代碼200,表示請求已經成功。
8.響應會穿越互聯網,回到Alice的電腦。
9.Alice的瀏覽器收到響應,並使用這些信息來創建和呈現Alice最終看到的視圖
[1] HTTP: https://www.codecademy.com/articles/http-requests
[2] REST: https://www.codecademy.com/articles/what-is-rest
[3] HTTP verb: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods
[4] Uniform Resource Identifier (URI): https://developer.mozilla.org/en-US/docs/Glossary/URI