Go Web框架 Gin路由(一)
簡介
Gin是目前應用比較廣泛的Golang web框架。Gin提供了web開發的一些基本功能。比如路由,中間件,日志,參數獲取等。Gin的路由功能是基于https://github.com/julienschmidt/httprouter 這個項目實現的。它是一個類似于martini但擁有更好性能的API框架,由于使用了httprouter,速度提高了40倍。gin中文文檔,地址https://gin-gonic.com/zh-cn/docs/
Gin安裝和使用
下載并安裝
go get -u github.com/gin-gonic/gin安裝完畢后,可以在當前系統得$GOPATH目錄下得src/github.com目錄中找到gin-goni目錄,該目錄下存放的就是gin框架的源碼 go env 可以查看GOPATH路徑
在文檔服務器里面
1.首先創建mod
git mod init 項目名
2.go get -u -v 把需要的包拉到mod
3.完成后生成 .sum
使用
示例
package mainimport ("github.com/gin-gonic/gin" )func main() {//創建一個默認的路由引擎r := gin.Default()//GET:請求方式; /hello :請求的路徑//當客戶端以GET方法請求/hello路徑時,會執行后面的匿名函數r.GET("/hello", func(c *gin.Context) {//c.Json:返回JSON格式的數據c.JSON(200, gin.H{"message": "Hello world",})})//啟動HTTP服務,默認在0.0.0.0:8080 啟動服務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方法,第一個參數是解析的路徑,第二個是func函數處理get請求,
發現端口已被占用
法一:修改監聽的端口
法二:將端口釋放
查看端口的占用情況(linux)
-t (tcp) 僅顯示tcp相關選項
-u (udp)僅顯示udp相關選項
-n 拒絕顯示別名,能顯示數字的全部轉化為數字
-l 僅列出在Listen(監聽)的服務狀態
-p 顯示建立相關鏈接的程序名
根據端口找到對應的進程
restful API
REST是客戶端與web服務器之間進行交互的時候,使用HTTP協議中的4個請求方法代表不同的動作。
GET用來獲取資源
POST用來新建資源
PUT用來更新資源
DELETE永安里刪除資源
只要API程序遵循了REST風格,那就可以稱其為RESTful API 。前后端基本都是通過RESTful API來進行交互。
編寫一個管理書籍的系統,查詢對一本書進行查詢,創建,更新和刪除等操作,我們在編寫程序的時候就要設計客戶端瀏覽器與我們web服務端交互的方式和路徑。按照經驗我們通常設計如下模式
同樣的需求我們按照RESTful AP設計
相關代碼
開發RESTful API的時候我們通常使用Postman來作為客戶端測試工具
GET請求
POST請求
PUT請求
DELETE請求
Gin渲染
HTML渲染
首先定義一個存放模板文件的templates文件夾,然后再內部按照業務分別定義一個posts文件夾和users文件夾,posts/index.html文件的內容如下:
{{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文件內容如下:
新建一個mod
完成后又生成了一個sum文件
之后可以執行正常的go 命令
Gin框架中使用LoadHTMLGlob()或者LoadHTMLFiles()方法進行HTML模板渲染
總結
以上是生活随笔為你收集整理的Go Web框架 Gin路由(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高级售前客户服务专员题库
- 下一篇: 如何解决同花顺软件打开时,出现 “无法与