Web framework-Gin

一、Gin

Go Web--Go Module

????????軟件框架(software framework),通常指的是為了實現某個業界標準或完成特定基本任務的軟件組件規范,也指為了實現某個軟件組件規范時,提供規范所要求之基礎功能的軟件產品。

????????框架就是:偷懶的程序員,寫代碼發現寫過了寫的就是那些玩意,碼農,只是代碼的搬運工,干脆將代碼進行封裝, 之后進行重復使用的過程。

????????使用框架,可以大大的提升開發的效率。
????????其實用GO語言標準庫就可以完成web開發,但是為什么使用框架呢?框架就是一個別人搭建好的舞臺,有很多現成的工具可以提供給你用,你在此基礎上開發效率肯定更高。

Go的Web框架分兩派:
一派是基于標準庫net/http的,比如gin-gonic/gin,labstack/echo,astaxie/beego
一派是基于valyala/fasthttp的,更偏向于性能,比如kataras/ iris , gofiber/fiber

1、Gin框架

Gin框架文檔說明

2、新建Gin項目

Go Web--Go Module

1、下載并安裝 gin:

go get -u github.com/gin-gonic/gin

2、測試代碼

package mainimport ("github.com/gin-gonic/gin"
)func main() {r := gin.Default()r.GET("/test", func(c *gin.Context) {c.JSON(200, gin.H{"msg": "test Gin success",})})r.Run()
}

訪問測試http://localhost:8080/test

3、運行原理

package mainimport ("github.com/gin-gonic/gin"
)func Test(c *gin.Context) {c.JSON(200, gin.H{"msg": "test Gin success",})
}func main() {//Default()返回的是一個引擎Engine,它是框架非常重要的數據結構,是框架的入口。//引擎 - 框架核心發送機 - 默認服務器 - 整個web服務都是由它來驅動的//Default()底層調用了New(),相當于New()的升級,New()返回的是一個引擎,//在此基礎上多增加了中間件處理-engine.Use(Logger(), Recovery())r := gin.Default()//r := gin.New()//路由:通過訪問"/test"的GET請求走這一條處理邏輯,走對應的函數中的內容//"/test" : 路由規則  函數:路由函數//路由請求方式:GET、POST、DELETE、PATCH、PUT、OPTIONS、HEAD、Any//函數:可以直接寫匿名函數,還可以在外部定義函數使用//r.GET("/test", func(c *gin.Context) {//	c.JSON(200, gin.H{//		"msg": "test Gin success",//	})//})r.GET("/test", Test)//啟動引擎 ,服務器啟動//Run可以傳入參數:host+port//中間拼接的冒號一定不要忘記//r.Run()r.Run(":9999")//r.Run("192.168.0.171:9999")
}

啟動測試

4、數據交互

4.1、模板文件

1、Engine的LoadHTMLFiles方法:(不推薦)
func (engine *Engine) LoadHTMLFiles(files ...string) {
加載子指定的模板文件
不定長參數,可以傳多個字符串,使用這個方法需要指定所有要使用的html文件路徑
2、Engine的LoadHTMLGlob方法:(推薦)
func (engine *Engine) LoadHTMLGlob(pattern string) {
加載子文件夾下的模板文件
只有一個參數,通配符,如:templates/* ,意思是找當前項目路徑下templates文件夾下所有的html文件
3、渲染HTML模板文件:Context的HTML方法:
func (c *Context) HTML(code int, name string, obj any) {
第一個參數:狀態碼
第二個參數:渲染的文件名
第三個參數:傳入參數,空接口可以接受任意類型

HTTP狀態碼

創建templates文件夾下新建hello01.html和hello02.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>Hello01 World!
</body>
</html>
package mainimport ("github.com/gin-gonic/gin"
)func Test(context *gin.Context) {context.HTML(200, "hello01.html", nil)
}func main() {r := gin.Default()//加載文件//r.LoadHTMLFiles("templates/hello01.html", "templates/hello02.html")r.LoadHTMLGlob("templates/*")r.GET("/test", Test)r.Run()
}

啟動測試

?多級目錄模板指定

1、如果有多級目錄,比如templates下有demo01和demo02兩個目錄,如果要使用里面的html文件,
必須得在Load的時候指定多級才可以,
比如:
r.LoadHTMLGlob("templates/**/*")2、指定html文件,除了第一級的templates路徑不需要指定,后面的路徑都要指定
context.HTML(200, "demo02/hello02.html", nil)
3、在html中define定義目錄
{{define "demo02/hello02.html"}}
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>Demo02 Hello02 World!
</body>
</html>
{{end}}

package mainimport ("github.com/gin-gonic/gin"
)func Test(context *gin.Context) {context.HTML(200, "demo02/hello02.html", nil)
}func main() {r := gin.Default()//加載文件//r.LoadHTMLFiles("templates/hello01.html", "templates/hello02.html")r.LoadHTMLGlob("templates/**/*")r.GET("/test", Test)r.Run()
}

啟動測試

?

?

Golang學習+深入(一)

永遠不要讓無法完全信任的人知道你真正的實力有多少!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39694.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39694.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39694.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習|Softmax 回歸的數學理解及代碼解析

機器學習&#xff5c;Softmax 回歸的數學理解及代碼解析 Softmax 回歸是一種常用的多類別分類算法&#xff0c;適用于將輸入向量映射到多個類別的概率分布。在本文中&#xff0c;我們將深入探討 Softmax 回歸的數學原理&#xff0c;并提供 Python 示例代碼幫助讀者更好地理解和…

HarmonyOS NEXT新能力,一站式高效開發HarmonyOS應用

2023年8月6日華為開發者大會2023&#xff08;HDC.Together&#xff09;圓滿收官&#xff0c;伴隨著HarmonyOS 4的發布&#xff0c;華為向開發者發布了匯聚所有最新開發能力的HarmonyOS NEXT開發者預覽版&#xff0c;并分享了圍繞“一次開發&#xff0c;多端部署” “可分可合&a…

代碼隨想錄算法訓練營第60天|動態規劃part17| 647. 回文子串、516.最長回文子序列、動態規劃總結篇

代碼隨想錄算法訓練營第60天&#xff5c;動態規劃part17&#xff5c; 647. 回文子串、516.最長回文子序列、動態規劃總結篇 647. 回文子串 647. 回文子串 思路&#xff1a; 暴力解法 兩層for循環&#xff0c;遍歷區間起始位置和終止位置&#xff0c;然后還需要一層遍歷判斷…

【mysql】—— 表的增刪改查

目錄 序言 &#xff08;一&#xff09;Create操作 1、單行數據 全列插入 2、多行數據 指定列插入 3、插入否則更新 4、直接替換 &#xff08;二&#xff09;Retrieve操作 1、SELECT 列 1??全列查詢 2??指定列查詢 3??查詢字段為表達式 4??為查詢結果指定…

數據結構——堆

數據結構——堆 堆堆簡介堆的分類 二叉堆過程插入操作 刪除操作向下調整&#xff1a; 增加某個點的權值實現參考代碼&#xff1a;建堆方法一&#xff1a;使用 decreasekey&#xff08;即&#xff0c;向上調整&#xff09;方法二&#xff1a;使用向下調整 應用對頂堆 其他&#…

Python Flask+Echarts+sklearn+MySQL(評論情感分析、用戶推薦、BI報表)項目分享

Python FlaskEchartssklearnMySQL(評論情感分析、用戶推薦、BI報表)項目分享 項目背景&#xff1a; 隨著互聯網的快速發展和智能手機的普及&#xff0c;人們越來越傾向于在網上查找餐廳、購物中心、酒店和旅游景點等商戶的點評和評分信息&#xff0c;以便做出更好的消費決策。…

YOLOv8 : 網絡結構

一. YOLOv8網絡結構 1. Backbone YOLOv8的Backbone同樣參考了CSPDarkNet-53網絡&#xff0c;我們可以稱之為CSPDarkNet結構吧&#xff0c;與YOLOv5不同的是&#xff0c;YOLOv8使用C2f(CSPLayer_2Conv)代替了C3模塊(如果你比較熟悉YOLOv5的網絡結構&#xff0c;那YOLOv8的網絡…

【GitHub】Pycharm本地項目打包上傳到Github倉庫的操作步驟

文章目錄 1、Pycharm端的設置操作2、Github端的設置操作3、Pycharm上配置Github4、Git本地項目至GitHub倉庫5、前往Github中查看確認6、常見報錯 1、Pycharm端的設置操作 通過CtrlAltS快捷組合鍵的方式&#xff0c;打開設置&#xff0c;導航到版本控制一欄中的Git&#xff0c;…

Gin安裝解決國內go 與 熱加載

get 方式安裝超時問題&#xff0c;國內直接用官網推薦的下面這個命令大概率是安裝不成功的 go get -u github.com/gin-gonic/gin 可以在你的項目目錄下執行下面幾個命令&#xff1a; 比如我的項目在E:\Oproject\zl cmd E:\Oproject\zl>就在目錄下執行 go env -w GO111…

回歸預測 | MATLAB實現GRU門控循環單元多輸入多輸出

回歸預測 | MATLAB實現GRU門控循環單元多輸入多輸出 目錄 回歸預測 | MATLAB實現GRU門控循環單元多輸入多輸出預測效果基本介紹程序設計往期精彩參考資料 預測效果 基本介紹 MATLAB實現GRU門控循環單元多輸入多輸出&#xff0c;數據為多輸入多輸出預測數據&#xff0c;輸入10個…

pytorch安裝VAE項目詳解

安裝VAE項目 一、 基本環境二、代碼來源三、搭建conda環境四、下載數據集五、啟動項目六、其他相關問題 一、 基本環境 工具版本號OSwin 11pycharm2020.1GPU3050 二、代碼來源 github地址為&#xff1a; https://github.com/AntixK/PyTorch-VAE/blob/8700d245a9735640dda458d…

ZooKeeper的應用場景(集群管理、Master選舉)

5 集群管理 隨著分布式系統規模的日益擴大&#xff0c;集群中的機器規模也隨之變大&#xff0c;因此&#xff0c;如何更好地進行集群管理也顯得越來越重要了。 所謂集群管理&#xff0c;包括集群監控與集群控制兩大塊&#xff0c;前者側重對集群運行時狀態的收集&#xff0c;后…

08 - 追加commit和修改最新的commit message

查看所有文章鏈接&#xff1a;&#xff08;更新中&#xff09;GIT常用場景- 目錄 文章目錄 1. 追加提交2. 修改最新的commit message 1. 追加提交 將改動追加到上一次的commit 現在我已經修改了Readme文件并且已經add、commit操作&#xff0c;但是還沒有push到遠程倉庫&#x…

【左神算法刷題班】第17節:在有序二維數組中查找目標值、等于目標字符串的子序列個數

第17節 題目1&#xff1a;在有序二維數組中查找目標值 給定一個每一行有序、每一列也有序&#xff0c;整體可能無序的二維數組 再給定一個數num&#xff0c; 返回二維數組中有沒有num這個數 例子 數組如下&#xff0c;找 6 是否存在。 1 3 5 7 2 4 6 13 3 9 14 …

“心理健康人工智能產學研創新聯盟”揭牌成立|深蘭科技

8月14日上午&#xff0c;“2023樹洞救援年會”在上海舉行&#xff0c;會上舉行了“心理健康人工智能產學研創新聯盟”的簽約和揭牌儀式。“樹洞行動救援團”創始人深蘭科技科學院智能科學首席科學家、荷蘭阿姆斯特丹自由大學人工智能系終身教授黃智生&#xff0c;深蘭科技集團創…

華納云:ubuntu啟動寶塔的方法是什么

要在Ubuntu上啟動寶塔面板&#xff08;BT Panel&#xff09;&#xff0c;請按照以下步驟操作&#xff1a; 下載并安裝寶塔面板&#xff1a; 在終端中執行以下命令&#xff0c;以下載并運行寶塔面板的安裝腳本&#xff1a; sudo su wget -O install.sh http://download.bt.c…

Git 常用操作

一、Git 常用操作 1、Git 切換分支 git checkout命令可以用于三種不同的實體&#xff1a;文件&#xff0c;commit&#xff0c;以及分支。checkout的意思就是對于一種實體的不同版本之間進行切換的操作。checkout一個分支&#xff0c;會更新當前的工作空間中的文件&#xff0c;…

68 # 中間層如何請求其他服務

前端 ajax 有跨域問題&#xff0c;可以先訪問中間層&#xff0c;在通過 node 去請求別的服務端口&#xff0c;可以解決跨域問題 編寫中間層調用 // 中間層的方式const http require("http");// http.get 默認發送 get 請求 // http.request 支持其他請求格式 postl…

Java基礎知識實際應用(學生信息管理系統、猜拳小游戲、打印日歷)

一、Java學生信息管理系統 這個系統包含了添加、修改、刪除、查詢和顯示所有學生信息等功能。您可以在此基礎上進行修改和完善&#xff0c;以適應您的需求。 import java.util.Scanner;public class StudentManagementSystem {private static Scanner scanner new Scanner(S…

haproxy負載均衡

1、配置環境 作用環境windows測試  192.168.33.158 172.25.0.11 haproxy負載均衡haproxy&#xff1a;2.8.1&#xff0c;centos7172.25.0.31web服務器1--rs1Apache&#xff1a;2.4&#xff0c;redhat9172.25.0.32web服務器2--rs2Apache&#xff1a;2.4 &#xff0c; redhat9 2、…