go語(yǔ)言優(yōu)化項(xiàng)目 go語(yǔ)言項(xiàng)目實(shí)戰(zhàn)

GO語(yǔ)言(十三):使用 Go 和 Gin 開(kāi)發(fā) RESTful API(下)

當(dāng)客戶端在 發(fā)出POST請(qǐng)求時(shí)/albums,您希望將請(qǐng)求正文中描述的專(zhuān)輯添加到現(xiàn)有專(zhuān)輯數(shù)據(jù)中。

創(chuàng)新互聯(lián)建站專(zhuān)注于寶坻網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供寶坻營(yíng)銷(xiāo)型網(wǎng)站建設(shè),寶坻網(wǎng)站制作、寶坻網(wǎng)頁(yè)設(shè)計(jì)、寶坻網(wǎng)站官網(wǎng)定制、小程序開(kāi)發(fā)服務(wù),打造寶坻網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供寶坻網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

為此,您將編寫(xiě)以下內(nèi)容:

1、編寫(xiě)代碼

a.添加代碼以將專(zhuān)輯數(shù)據(jù)添加到專(zhuān)輯列表。

在此代碼中:

1)用于Context.BindJSON 將請(qǐng)求正文綁定到newAlbum。

2) album將從 JSON 初始化的結(jié)構(gòu)附加到albums 切片。

3)向響應(yīng)添加201狀態(tài)代碼,以及表示您添加的專(zhuān)輯的 JSON。

b.更改您的main函數(shù),使其包含該router.POST函數(shù),如下所示。

在此代碼中:

1)將路徑中的POST方法與 /albumspostAlbums函數(shù)相關(guān)聯(lián)。

使用 Gin,您可以將處理程序與 HTTP 方法和路徑組合相關(guān)聯(lián)。這樣,您可以根據(jù)客戶端使用的方法將發(fā)送到單個(gè)路徑的請(qǐng)求單獨(dú)路由。

a.如果服務(wù)器從上一節(jié)開(kāi)始仍在運(yùn)行,請(qǐng)停止它。

b.從包含 main.go 的目錄中的命令行,運(yùn)行代碼。

c.從不同的命令行窗口,用于curl向正在運(yùn)行的 Web 服務(wù)發(fā)出請(qǐng)求。

該命令應(yīng)顯示添加專(zhuān)輯的標(biāo)題和 JSON。

d.與上一節(jié)一樣,使用curl檢索完整的專(zhuān)輯列表,您可以使用它來(lái)確認(rèn)添加了新專(zhuān)輯。

該命令應(yīng)顯示專(zhuān)輯列表。

當(dāng)客戶端向 發(fā)出請(qǐng)求時(shí)GET /albums/[id],您希望返回 ID 與id路徑參數(shù)匹配的專(zhuān)輯。

為此,您將:

a.在您在上一節(jié)中添加的函數(shù)下方postAlbums,粘貼以下代碼以檢索特定專(zhuān)輯。

此getAlbumByID函數(shù)將提取請(qǐng)求路徑中的 ID,然后找到匹配的專(zhuān)輯。

在此代碼中:

(1)Context.Param用于從 URL 中檢索id路徑參數(shù)。當(dāng)您將此處理程序映射到路徑時(shí),您將在路徑中包含參數(shù)的占位符。

(2)循環(huán)album切片中的結(jié)構(gòu),尋找其ID 字段值與id參數(shù)值匹配的結(jié)構(gòu)。如果找到,則將該album結(jié)構(gòu)序列化為 JSON,并將其作為帶有200 OK HTTP 代碼的響應(yīng)返回。

如上所述,實(shí)際使用中的服務(wù)可能會(huì)使用數(shù)據(jù)庫(kù)查詢來(lái)執(zhí)行此查找。

(3)如果找不到專(zhuān)輯,則返回 HTTP 404錯(cuò)誤。

b.最后,更改您的main,使其包含對(duì)router.GET的新調(diào)用,路徑現(xiàn)在為/albums/:id ,如以下示例所示。

在此代碼中:

(1)將/albums/:id路徑與getAlbumByID功能相關(guān)聯(lián)。在 Gin 中,路徑中項(xiàng)目前面的冒號(hào)表示該項(xiàng)目是路徑參數(shù)。

a.如果服務(wù)器從上一節(jié)開(kāi)始仍在運(yùn)行,請(qǐng)停止它。

b.在包含 main.go 的目錄中的命令行中,運(yùn)行代碼以啟動(dòng)服務(wù)器。

c.從不同的命令行窗口,用于curl向正在運(yùn)行的 Web 服務(wù)發(fā)出請(qǐng)求。

該命令應(yīng)顯示您使用其 ID 的專(zhuān)輯的 JSON。如果找不到專(zhuān)輯,您將收到帶有錯(cuò)誤消息的 JSON。

恭喜!您剛剛使用 Go 和 Gin 編寫(xiě)了一個(gè)簡(jiǎn)單的 RESTful Web 服務(wù)。

本節(jié)包含您使用本教程構(gòu)建的應(yīng)用程序的代碼。

如何學(xué)習(xí)GO語(yǔ)言?

Go語(yǔ)言也稱(chēng) Golang,兼具效率、性能、安全、健壯等特性。這套Go語(yǔ)言教程(Golang教程)通俗易懂,深入淺出,既適合沒(méi)有基礎(chǔ)的讀者快速入門(mén),也適合工作多年的程序員查閱知識(shí)點(diǎn)。

Go 語(yǔ)言

這套教程在講解一些知識(shí)點(diǎn)時(shí),將 Go 語(yǔ)言和其他多種語(yǔ)言進(jìn)行對(duì)比,讓掌握其它編程語(yǔ)言的讀者能迅速理解 Go 語(yǔ)言的特性。Go語(yǔ)言從底層原生支持并發(fā),無(wú)須第三方庫(kù)、開(kāi)發(fā)者的編程技巧和開(kāi)發(fā)經(jīng)驗(yàn)就可以輕松搞定。

Go語(yǔ)言(或 Golang)起源于 2007 年,并在 2009 年正式對(duì)外發(fā)布。Go 是非常年輕的一門(mén)語(yǔ)言,它的主要目標(biāo)是“兼具 Python 等動(dòng)態(tài)語(yǔ)言的開(kāi)發(fā)速度和 C/C++ 等編譯型語(yǔ)言的性能與安全性”。

Go語(yǔ)言是編程語(yǔ)言設(shè)計(jì)的又一次嘗試,是對(duì)類(lèi)C語(yǔ)言的重大改進(jìn),它不但能讓你訪問(wèn)底層操作系統(tǒng),還提供了強(qiáng)大的網(wǎng)絡(luò)編程和并發(fā)編程支持。Go語(yǔ)言的用途眾多,可以進(jìn)行網(wǎng)絡(luò)編程、系統(tǒng)編程、并發(fā)編程、分布式編程。

Go語(yǔ)言的推出,旨在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性,具有“部署簡(jiǎn)單、并發(fā)性好、語(yǔ)言設(shè)計(jì)良好、執(zhí)行性能好”等優(yōu)勢(shì),目前國(guó)內(nèi)諸多 IT 公司均已采用Go語(yǔ)言開(kāi)發(fā)項(xiàng)目。Go語(yǔ)言有時(shí)候被描述為“C 類(lèi)似語(yǔ)言”,或者是“21 世紀(jì)的C語(yǔ)言”。Go 從C語(yǔ)言繼承了相似的表達(dá)式語(yǔ)法、控制流結(jié)構(gòu)、基礎(chǔ)數(shù)據(jù)類(lèi)型、調(diào)用參數(shù)傳值、指針等很多思想,還有C語(yǔ)言一直所看中的編譯后機(jī)器碼的運(yùn)行效率以及和現(xiàn)有操作系統(tǒng)的無(wú)縫適配。

因?yàn)镚o語(yǔ)言沒(méi)有類(lèi)和繼承的概念,所以它和 Java 或 C++ 看起來(lái)并不相同。但是它通過(guò)接口(interface)的概念來(lái)實(shí)現(xiàn)多態(tài)性。Go語(yǔ)言有一個(gè)清晰易懂的輕量級(jí)類(lèi)型系統(tǒng),在類(lèi)型之間也沒(méi)有層級(jí)之說(shuō)。因此可以說(shuō)Go語(yǔ)言是一門(mén)混合型的語(yǔ)言。

此外,很多重要的開(kāi)源項(xiàng)目都是使用Go語(yǔ)言開(kāi)發(fā)的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。Go 是編譯型語(yǔ)言,Go 使用編譯器來(lái)編譯代碼。編譯器將源代碼編譯成二進(jìn)制(或字節(jié)碼)格式;在編譯代碼時(shí),編譯器檢查錯(cuò)誤、優(yōu)化性能并輸出可在不同平臺(tái)上運(yùn)行的二進(jìn)制文件。要?jiǎng)?chuàng)建并運(yùn)行 Go 程序,程序員必須執(zhí)行如下步驟。

使用文本編輯器創(chuàng)建 Go 程序;

保存文件;編譯程序;運(yùn)行編譯得到的可執(zhí)行文件。

這不同于 Python、Ruby 和 JavaScript 等語(yǔ)言,它們不包含編譯步驟。Go 自帶了編譯器,因此無(wú)須單獨(dú)安裝編譯器。

鏈喬教育在線旗下學(xué)碩創(chuàng)新區(qū)塊鏈技術(shù)工作站是中國(guó)教育部學(xué)校規(guī)劃建設(shè)發(fā)展中心開(kāi)展的“智慧學(xué)習(xí)工場(chǎng)2020-學(xué)碩創(chuàng)新工作站 ”唯一獲準(zhǔn)的“區(qū)塊鏈技術(shù)專(zhuān)業(yè)”試點(diǎn)工作站。專(zhuān)業(yè)站立足為學(xué)生提供多樣化成長(zhǎng)路徑,推進(jìn)專(zhuān)業(yè)學(xué)位研究生產(chǎn)學(xué)研結(jié)合培養(yǎng)模式改革,構(gòu)建應(yīng)用型、復(fù)合型人才培養(yǎng)體系。

對(duì)比 Go 語(yǔ)言,Rust 有什么優(yōu)勢(shì)和劣勢(shì)?

我并沒(méi)有什么編程的經(jīng)驗(yàn),覺(jué)得編程實(shí)在是太復(fù)雜了,不喜歡去研究太多,對(duì)這個(gè)也不怎么懂,只能說(shuō)自己是個(gè)半吊子,就是所掌握的知識(shí),也是東拼西湊的,朋友和我說(shuō)點(diǎn)兒,自己去書(shū)上看一點(diǎn)兒,只能說(shuō)根據(jù)自己的體驗(yàn)給出一些體會(huì)吧。

Rust的優(yōu)勢(shì)是:

1、Rust把安全、精確的內(nèi)存管理作為一切的中心放在首要的位置。

2、Rust同時(shí)擁有特別強(qiáng)的控制性和特別強(qiáng)的安全性。

3、Rust語(yǔ)言通過(guò): 優(yōu)秀的類(lèi)型系統(tǒng)設(shè)計(jì)、 嚴(yán)格的編譯器靜態(tài)審查、 配合程序員局部核對(duì)、加上少量的運(yùn)行時(shí)校驗(yàn),保障了內(nèi)存安全。

4、Rust的語(yǔ)言特別的復(fù)雜,導(dǎo)致學(xué)習(xí)曲線比較陡峭,對(duì)于初學(xué)者來(lái)說(shuō)難度較大。但學(xué)通之后將終生受益。

5、效率高,速度特別的快

6、 支持范型

7、 社區(qū)活躍度很高,更加的強(qiáng)調(diào)了社區(qū)的作用。

8、Rust 有更強(qiáng)的語(yǔ)義,更容易捕獲錯(cuò)誤的邏輯,編譯器直接檢查出你代碼中的不安全的部分

Rust的劣勢(shì)是:

1、 語(yǔ)言相對(duì)來(lái)說(shuō)比較復(fù)雜,對(duì)于新手來(lái)說(shuō),讓新手摸不著頭腦。

2、還不算太穩(wěn)定。

其實(shí)我覺(jué)得什么代碼啊編程啊這些東西還是比較適合理工的學(xué)生去研究,我一看腦袋就大,完全不明白在講什么。我大概了解的就是這些,語(yǔ)言的話大家可以多方面的去了解,也不是說(shuō)有缺點(diǎn)就是不好,看配置看個(gè)人吧,每個(gè)人習(xí)慣不一樣,也許有的人用不穩(wěn)定的還覺(jué)得挺好呢,有的人就喜歡比較完美的,在我看來(lái)編程這個(gè)東西真的是很復(fù)雜,會(huì)有很多的代碼,這些代碼弄得我自己頭都大了,有的時(shí)候還得去惡補(bǔ)一下。

分享文章:go語(yǔ)言優(yōu)化項(xiàng)目 go語(yǔ)言項(xiàng)目實(shí)戰(zhàn)
分享URL:http://www.muchs.cn/article46/hhichg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、全網(wǎng)營(yíng)銷(xiāo)推廣品牌網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)、微信公眾號(hào)關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作