- 博主簡介:努力學(xué)習(xí)的大一在校計(jì)算機(jī)專業(yè)學(xué)生,熱愛學(xué)習(xí)和創(chuàng)作。目前在學(xué)習(xí)和分享:數(shù)據(jù)結(jié)構(gòu)、Go,Java等相關(guān)知識。
- 博主主頁: @是瑤瑤子啦
- 所屬專欄: Go語言核心編程
- 近期目標(biāo):寫好專欄的每一篇文章
一、什么是Web
-
全稱:“萬維網(wǎng)”(World Wide Web)
-
本質(zhì):系統(tǒng)(基于互聯(lián)網(wǎng)).由一系列的超文本文檔Hypertext Documents)組成
-
作用:用戶可以通過瀏覽器/APP,在Web上訪問各種網(wǎng)站、資源
-
原理(重要):
-
Web的核心技術(shù):
- 超文本標(biāo)記語言(HTML等):用于組織和創(chuàng)建Web頁面
- 超文本傳輸協(xié)議(HTTP):Web客戶端和服務(wù)器之間傳輸數(shù)據(jù)的協(xié)議
- 網(wǎng)頁瀏覽器(Web Browser):用于顯示W(wǎng)eb頁面的軟件
- 統(tǒng)一資源定位符(URL):表示W(wǎng)eb資源的地址
-
發(fā)展歷程
- 靜態(tài)Web:由靜態(tài)頁面組成,該系統(tǒng)的內(nèi)容是靜態(tài)的、固定的,無法根據(jù)用戶需求進(jìn)行更新
- 動(dòng)態(tài)Web:使用服務(wù)器端腳本語言(PHP、ASP、JSP)和數(shù)據(jù)庫用于處理用戶請求,動(dòng)態(tài)生成頁面內(nèi)容
-
Web2.0:強(qiáng)調(diào)用戶參與、互動(dòng)、分享社交
- 用戶生成內(nèi)容(User-generated content):比如瑤瑤子現(xiàn)在在CSDN上寫博客,就是讓我這個(gè)用戶,也成為了Web內(nèi)容的創(chuàng)造者和分享者
- 社交互動(dòng)(Social interaction)你在評論區(qū)給瑤瑤子評論、或者加入瑤瑤子的社區(qū),我們分享信息、建立聯(lián)系,這就是用戶之間的互動(dòng)
- 富媒體應(yīng)用(Rich media applications):在線視頻、游戲等
二、RESTful架構(gòu)
?????♂?推薦閱讀:阮一峰 理解RESTful架構(gòu)
2.1:RESTful介紹
RESTful(Representational State Transfer,表述性狀態(tài)轉(zhuǎn)移)是一種軟件架構(gòu)風(fēng)格,它基于HTTP協(xié)議,用于設(shè)計(jì)和開發(fā)網(wǎng)絡(luò)應(yīng)用程序。RESTful架構(gòu)風(fēng)格強(qiáng)調(diào)資源的標(biāo)識和狀態(tài)的轉(zhuǎn)移,使得客戶端和服務(wù)器之間的交互變得簡單和可擴(kuò)展。
-
資源(Resource):
在RESTful框架中,任何可以被標(biāo)識和訪問的對象都是資源(如網(wǎng)頁、圖片、視頻、數(shù)據(jù)庫記錄等) -
每一個(gè)URI(Uniform Resource Identifier:統(tǒng)一資源定位符)對應(yīng)一個(gè)資源實(shí)體
URL(Uniform Resource Locator:統(tǒng)一資源定位器)和 URN(Uniform Resource Name:統(tǒng)一資源名稱)都是URI的子集。作用是在互聯(lián)網(wǎng)上唯一標(biāo)識資源,便于資源的訪問和管理。- URL:由協(xié)議名、主機(jī)名、路徑、查詢參數(shù)組成。作用:定位資源的具體位置和信息。當(dāng)我們在瀏覽器輸入一個(gè)URL時(shí),瀏覽器會(huì)根據(jù)URL信息向服務(wù)器發(fā)送請求,獲取對應(yīng)資源(網(wǎng)頁、圖片、視頻等)。
- URN:由命名空間和資源名稱組成,和URL不同的是它不包含用于定位資源的具體信息。作用:指定持久性資源的名稱,比如數(shù)字對象標(biāo)識符(DOI)、國際標(biāo)準(zhǔn)書號(ISBN)、國際標(biāo)準(zhǔn)音像制品編號(ISRC)等,便于資源的唯一標(biāo)識和長期管理。
-
HTTP方法:
RESTful架構(gòu)使用http協(xié)議定義了一組方法:來對服務(wù)器的資源進(jìn)行操作-
GET
:獲取資源 -
POST
:創(chuàng)建資源 -
PUT
:更新資源 -
DELETE
:刪除資源
-
-
表示(Representation)
?是客戶端(用戶)和服務(wù)器之間交換數(shù)據(jù)的一種格式,通常由客戶端發(fā)送給服務(wù)器或者由服務(wù)器發(fā)送給客戶端。Representation可以是任何格式的數(shù)據(jù),如:XML、JSON、HTML等
?客戶端和服務(wù)器可以使用不同的表示格式進(jìn)行交互,只要它們都能夠解析和處理這個(gè)表示即可。因此,表示的靈活性和可擴(kuò)展性是RESTful架構(gòu)的重要特點(diǎn)之一
??????♀?舉例:瑤瑤子把她博客的鏈接(本質(zhì)就是URL:這篇文章的資源標(biāo)識符)分享給你,你在瀏覽器輸入這個(gè)鏈接,按回車,就是從客戶端向CSDN的服務(wù)器發(fā)送了一個(gè)請求,CSDN的服務(wù)器可以將這篇文章的內(nèi)容以某種格式的表示(HTML)返回給你(客戶端),你的瀏覽器可以解析這個(gè)Representation,提取文章內(nèi)容并進(jìn)行顯示和處理~ -
狀態(tài)轉(zhuǎn)移(State Transfer)
?是客戶端和服務(wù)器之間通過http方法和表示,來實(shí)現(xiàn)狀態(tài)的轉(zhuǎn)移。這個(gè)狀態(tài),指的是資源的狀態(tài),可以是任何屬性或者信息。
??????♀?舉例:瑤瑤子又要肝博客啦!于是瑤瑤子在CSDN的客戶端給CSDN的服務(wù)器發(fā)送了一個(gè)http的post
請求,請求的URI指向博客文章資源的集合。請求中包含新文章的表示(representation),表示中包含:文章標(biāo)題、內(nèi)容等信息。這個(gè)適合服務(wù)器根據(jù)我的請求,創(chuàng)建了一個(gè)新的文章,并且返回了http響應(yīng),響應(yīng)中包含了新文章的URI和狀態(tài)碼。這個(gè)過程,客戶端和服務(wù)器就實(shí)現(xiàn)了狀態(tài)轉(zhuǎn)移的過程,從原來:沒有新文章的狀態(tài),通過Http 的post請求和表示,客戶端和服務(wù)器之間轉(zhuǎn)移到了新的狀態(tài):瑤瑤子的主頁內(nèi)多了一篇新博客!
2.2:RESTful API
2.2.1:什么是API?
?API的全稱是:Application Programming Interface,是一種軟件接口(注意,Web本質(zhì)其實(shí)也是一個(gè)軟件),用于定義軟件組件(或者叫作軟件模塊)之間的通信協(xié)議。
?當(dāng)不同的軟件模塊進(jìn)行相互通信時(shí),它們之間需要一種規(guī)范化的方式來傳遞數(shù)據(jù)和指令,也就是需要一個(gè)雙方都認(rèn)同的通信協(xié)議(這樣,雙方才知道你說了啥,給了我啥,我要做出上面反應(yīng))。
?API就是定義這種規(guī)范的方式,它來規(guī)定不同軟件組件之間如何進(jìn)行通信、傳遞數(shù)據(jù)。且客戶端和服務(wù)端都需要遵守API的定義的規(guī)范,才能正確地進(jìn)行數(shù)據(jù)和指令的傳遞。
?通過使用API,開發(fā)人員可以根據(jù)API的規(guī)范,使用API,輕松的訪問和使用不同軟件組件的功能,無需了解其內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。
分類
- Web API:通過網(wǎng)絡(luò)進(jìn)行通信的API,使用http協(xié)議+表示(representation)進(jìn)行數(shù)據(jù)交換,包括:RESTful API和SOAP API等
- 程序庫API:訪問和使用特定編程語言的或框架中的函數(shù)和類
- 操作系統(tǒng)API:訪問和使用操作系統(tǒng)中的函數(shù)和類
- 第三方API:由第三方開發(fā)者提供的API,用于訪問和使用其服務(wù)或者平臺
2.2.2:RESTful API
RESTful API是基于RESTful架構(gòu)風(fēng)格(上面已講)的Web API。是通過http協(xié)議和表示來實(shí)現(xiàn)的API設(shè)計(jì)模式。
RESTful API的核心就是客戶端和Web服務(wù)器進(jìn)行交互的適合,使用http協(xié)議中的四個(gè)請求方法,代表對資源的不同操作
-
GET
:獲取資源 -
POST
:創(chuàng)建資源 -
PUT
:更新資源 -
DELETE
:刪除資源
只要API程序都遵循了REST風(fēng)格,那么就將其稱為RESTful API.
RESRful API設(shè)計(jì)和開發(fā)和規(guī)范
-
資源和URL:資源是指應(yīng)用程序中的實(shí)體或者對象,每一個(gè)資源有唯一的URL地址,可以通過http方法對其進(jìn)行操作??蛻舳丝梢酝ㄟ^URL地址,對資源進(jìn)行CRUD。URL需要簡潔、有意義,使用名詞進(jìn)行資源描述(因?yàn)閯?dòng)作已經(jīng)由
get
\post
等這些方法確定了 -
http方法:RESTful API使用http協(xié)議中不同的方法來表示不同的操作,實(shí)現(xiàn)對資源的CRUD
-
GET
:獲取資源 -
POST
:創(chuàng)建資源 -
PUT
:更新資源 -
DELETE
:刪除資源
-
-
數(shù)據(jù)格式:RESTful API使用標(biāo)準(zhǔn)的數(shù)據(jù)格式來表示請求和響應(yīng)數(shù)據(jù),如:JSON、XML等。且請求和響應(yīng)的數(shù)據(jù)格式應(yīng)該統(tǒng)一,方便客戶端的處理和解析‘
-
狀態(tài)碼: RESTful API使用標(biāo)準(zhǔn)的HTTP狀態(tài)碼來表示請求和處理結(jié)果。常用的狀態(tài)碼包括
200 OK
、201 Created
、400 Bad Request
、401 Unauthorized
、403 Forbidden
、404 Not Found
、500 Internal Server Error
等。客戶端可以根據(jù)狀態(tài)碼來判斷請求是否成功,并根據(jù)不同的狀態(tài)碼進(jìn)行相應(yīng)的處理。 -
超媒體: RESTful API應(yīng)該使用超媒體(Hypermedia)來表示資源之間的關(guān)系和鏈接。客戶端可以通過超媒體鏈接輕松地導(dǎo)航和訪問不同的資源,從而實(shí)現(xiàn)應(yīng)用程序的動(dòng)態(tài)性和可擴(kuò)展性。
三、 初始Gin框架
Gin 是一個(gè)用 Go (Golang) 編寫的 HTTP Web 框架
Gin框架支持開發(fā)RESTful API
3.1:安裝和使用
- 下載安裝
go get -u github.com/gin-gonic/gin
- 將gin引入到當(dāng)前包,以使用gin框架
import "github.com/gin-gonic/gin"
- gin使用快速入門
package main
import "github.com/gin-gonic/gin"
func main() {
//創(chuàng)建一個(gè)默認(rèn)的路由引擎(引導(dǎo)別人訪問什么地址。執(zhí)行什么函數(shù))
r := gin.Default()
//指定用戶使用GET請求訪問/hello時(shí),執(zhí)行sayHello這個(gè)函數(shù)
r.GET("/hello", func(c *gin.Context) {
//c.JSON,返回JSON格式數(shù)據(jù)
c.JSON(200, gin.H{
"message": "yyz",
})
})
//啟動(dòng)http服務(wù),默認(rèn)在0.0.0.0:8080
r.Run()
}
-
路由(Routing)是指根據(jù)URL請求路徑(或者請求參數(shù))來確定應(yīng)用程序中相應(yīng)的代碼執(zhí)行路徑的過程。在Web開發(fā)中,路由通常指將HTTP請求的URL路徑與應(yīng)用程序中的相應(yīng)處理函數(shù)進(jìn)行綁定,以便在收到請求時(shí)能夠正確地路由請求到相應(yīng)的處理函數(shù)中。
-
Web應(yīng)用程序中的路由通常由路由引擎來管理,路由引擎根據(jù)URL路徑(或者請求參數(shù))來匹配相應(yīng)的處理函數(shù),并將HTTP請求轉(zhuǎn)發(fā)到相應(yīng)的處理函數(shù)中。
歡迎在評論區(qū)交流和留下你的想法和建議
如果對你有用,還請:??評論+????點(diǎn)贊+?收藏+?關(guān)注文章來源:http://www.zghlxwxcb.cn/news/detail-439119.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-439119.html
- Java島冒險(xiǎn)記【從小白到大佬之路】
- LeetCode每日一題–進(jìn)擊大廠
- 算法
- C/C++
- Go語言核心編程
- 數(shù)據(jù)結(jié)構(gòu)
到了這里,關(guān)于【Go Web開發(fā)】Web初識、RESTful架構(gòu)和RESTful API詳解、Gin框架的安裝和簡單使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!