日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Go Web框架 Gin路由(一)

發(fā)布時間:2024/8/1 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go Web框架 Gin路由(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介

Gin是目前應(yīng)用比較廣泛的Golang web框架。Gin提供了web開發(fā)的一些基本功能。比如路由,中間件,日志,參數(shù)獲取等。Gin的路由功能是基于https://github.com/julienschmidt/httprouter 這個項目實現(xiàn)的。它是一個類似于martini但擁有更好性能的API框架,由于使用了httprouter,速度提高了40倍。gin中文文檔,地址https://gin-gonic.com/zh-cn/docs/

Gin安裝和使用

下載并安裝

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

安裝完畢后,可以在當(dāng)前系統(tǒng)得$GOPATH目錄下得src/github.com目錄中找到gin-goni目錄,該目錄下存放的就是gin框架的源碼 go env 可以查看GOPATH路徑
在文檔服務(wù)器里面
1.首先創(chuàng)建mod
git mod init 項目名

2.go get -u -v 把需要的包拉到mod


3.完成后生成 .sum

使用

示例

package mainimport ("github.com/gin-gonic/gin" )func main() {//創(chuàng)建一個默認(rèn)的路由引擎r := gin.Default()//GET:請求方式; /hello :請求的路徑//當(dāng)客戶端以GET方法請求/hello路徑時,會執(zhí)行后面的匿名函數(shù)r.GET("/hello", func(c *gin.Context) {//c.Json:返回JSON格式的數(shù)據(jù)c.JSON(200, gin.H{"message": "Hello world",})})//啟動HTTP服務(wù),默認(rèn)在0.0.0.0:8080 啟動服務(wù)r.Run()err !=nil{log.Fatal(err.Error)} }

1.func Default()*Engine{ }
gin.Default()返回的是一個指針類型,路由引擎
2.返回的指針類型包含了一個run()方法,run方法返回一個error類型
3.可以用err接收返回的error類型,判斷是否為空,如果不為空的話,就打印log.Fatal(err.Error())
4.返回的指針類型engine還包含get方法,第一個參數(shù)是解析的路徑,第二個是func函數(shù)處理get請求,
發(fā)現(xiàn)端口已被占用

法一:修改監(jiān)聽的端口

法二:將端口釋放
查看端口的占用情況(linux)
-t (tcp) 僅顯示tcp相關(guān)選項
-u (udp)僅顯示udp相關(guān)選項
-n 拒絕顯示別名,能顯示數(shù)字的全部轉(zhuǎn)化為數(shù)字
-l 僅列出在Listen(監(jiān)聽)的服務(wù)狀態(tài)
-p 顯示建立相關(guān)鏈接的程序名

根據(jù)端口找到對應(yīng)的進(jìn)程

restful API

REST是客戶端與web服務(wù)器之間進(jìn)行交互的時候,使用HTTP協(xié)議中的4個請求方法代表不同的動作。
GET用來獲取資源
POST用來新建資源
PUT用來更新資源
DELETE永安里刪除資源
只要API程序遵循了REST風(fēng)格,那就可以稱其為RESTful API 。前后端基本都是通過RESTful API來進(jìn)行交互。

編寫一個管理書籍的系統(tǒng),查詢對一本書進(jìn)行查詢,創(chuàng)建,更新和刪除等操作,我們在編寫程序的時候就要設(shè)計客戶端瀏覽器與我們web服務(wù)端交互的方式和路徑。按照經(jīng)驗我們通常設(shè)計如下模式

同樣的需求我們按照RESTful AP設(shè)計

相關(guān)代碼

package mainimport ("github.com/gin-gonic/gin" )func main() {//創(chuàng)建一個默認(rèn)的路由引擎r := gin.Default()//GET:請求方式; /hello :請求的路徑//當(dāng)客戶端以GET方法請求/hello路徑時,會執(zhí)行后面的匿名函數(shù)r.GET("/book", func(c *gin.Context) {c.JSON(200, gin.H{"message": "GET",})})r.POST("/book", func(c *gin.Context) {c.JSON(200, gin.H{"message": "POST",})})r.PUT("/book", func(c *gin.Context) {c.JSON(200, gin.H{"message": "PUT",})})r.DELETE("/book", func(c *gin.Context) {c.JSON(200, gin.H{"message": "DELETE",})})////r.Run()啟動HTTP服務(wù),默認(rèn)在0.0.0.0:8080 啟動服務(wù) 如果是自己電腦就是本地ip(127.0.0.1)//但是此時我用的環(huán)境的ip是192.168.12.112:9000 所以訪問的時候用192.168.12.112r.Run("0.0.0.0:9000") } }

開發(fā)RESTful API的時候我們通常使用Postman來作為客戶端測試工具
GET請求

POST請求

PUT請求

DELETE請求

Gin渲染

HTML渲染

首先定義一個存放模板文件的templates文件夾,然后再內(nèi)部按照業(yè)務(wù)分別定義一個posts文件夾和users文件夾,posts/index.html文件的內(nèi)容如下:

{{define "posts/index.html"}} <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>posts/index</title> </head> <body>{{.title}} </body> </html> {{end}}


user/index.html文件內(nèi)容如下:

{{define "users/index.html"}} <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>users/index</title> </head> <body>{{.title}} </body> </html> {{end}}


新建一個mod


完成后又生成了一個sum文件

之后可以執(zhí)行正常的go 命令
Gin框架中使用LoadHTMLGlob()或者LoadHTMLFiles()方法進(jìn)行HTML模板渲染

package mainimport ("net/http""github.com/gin-gonic/gin" )func main() {//創(chuàng)建一個默認(rèn)的路由引擎r := gin.Default()r.LoadHTMLGlob("/home/liyingzhi/workspace/git.chinaddos.com/templates/**/*")r.GET("/posts/index", func(c *gin.Context) {c.HTML(http.StatusOK, "posts/index.html", gin.H{"title": "posts/index",})})r.GET("users/index", func(c *gin.Context) {c.HTML(http.StatusOK, "users/index.html", gin.H{"title": "users/index",})})////0.0.0.0:8080但是此時我用的環(huán)境的ip是192.168.12.112:9000 所以訪問的時候用192.168.12.112:9000r.Run(":9000") }

總結(jié)

以上是生活随笔為你收集整理的Go Web框架 Gin路由(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。