Gin Web框架實戰速學 一 開張篇


  不知不覺,距離golang已經發布了10年了,勞資預言golang未來一定會是一等一非常好,非常棒的語言,不要問為什么,我就是這樣覺得。微軟2003年發布.net(目前好像也比較“”叼“的樣子,注意“”叼”字加了雙引號),蘋果2007年發布Object C(后來變為Switch,勞資也不懂),Google作為世界上一等一的科技公司(至於百度不說了)

 

,肯定也要有自己的語言,於是golang 2009發布了,未來碾壓.net,腳踢switch自然不在話下(這里不討論語言好壞,其實能賺錢的技術好語言)。所以學習golang是很值得的。

可以參考文章:

部落圖鑒之 Go:爹好還這么努力

但本教程不是教你學golang基礎知識,而是講解golang web框架gin,所以go環境自行安裝,go基礎請自行惡補。本課程以“程序員在囧途在線教育“課程+github為參考+自己的一點嘮叨

學習gin需具備:

1、已經了解go語法基礎(go 1.11+).了解Linux、docker(基本操作)
2、對其他語言有過簡單的web代碼編寫基礎
3、對數據庫、redis 等 有所基礎了解,能自行搭建環境

git github地址
https://github.com/gin-gonic/gin

 

廢話不多說,下面開始我們看教程:

 

一、創建項目,分幾步

 

1、隨便創建一個文件夾(不要有中文、空格和奇怪的字符串,沒有為什么)
2、在 api.jeng.com下創建topic ,代表 話題相關API(其實起什么名字都無所謂)
3、cd進入topic執行: go mod init topic.jeng.com (mod為go包管理工具,php有composer,node有npm,java有maven,python有pip,咱們go也不能差吧)
4、在當前(topic目錄)目錄cmd(終端)下執行
go get github.com/gin-gonic/gin(gin會自動安裝在你的gopath目錄下的xxxxxx/pkg/mod/github.com/下)
5、用goland 打開topic目錄(goland采用2018.3以上版本,否則不支持mod索引啥的)
6、設置goland(Fiel->setting->Go:[1、GOROOT必須大於1.11版本,2、Go Modules勾選Enable Go Modules])

 

 

項目目錄文件如下:

 

 

 

二、開始寫代碼

 

在topic項目目錄創建main.go文件

根據github的案例教程無腦輸入一下內容

 

package main

import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()    //創建默認路由,其實就是一個handler
   //添加路由,不用為什么是 /ping(你可以可以設置為/user, /login),勞資復制GitHub官方的案例,保持原汁原味,所以多看官方文檔 r.GET(
"/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) })
  //默認開啟8080,如果需要開啟其他的,可以設置r.Run(9090) r.Run()
// listen and serve on 0.0.0.0:8080 }

 

執行goland菜單欄的run,項目運行后,使用chrome瀏覽器訪問  

http://localhost:8080/ping

即可看到輸出內容   {"message":"pong"}  #擦,原來gin的作者喜歡打乒乓

 

 

完了,gin就是這么簡單,簡單得“讓人發指

 

以下改裝下代碼:

其實代碼也可以這樣寫:

package main
import "github.com/gin-gonic/gin"
type Topic struct{
    TopicID int
    TopicTitle string }

func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200,&Topic{101, "這是title"})  //傳結構體
    })
    r.Run() // listen and serve on 0.0.0.0:8080
}

輸出    {"TopicID":101,"TopicTitle":"這是title"}

 

或者這樣寫:

package main
import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {

        m:=make(map[string]string)
        m["topicid"]="102"
        m["topictitle"]="title--102"

        c.JSON(200,m)  //給map類型
    })
    r.Run() // listen and serve on 0.0.0.0:8080
}

如果你想輸出字符串,可以這樣寫

r.GET("/", func(c *gin.Context) {         
    c.Writer.Write([]
byte("firewdddeb"))
})

 

先講這么些內容,不得不說gin真的非常好,非常棒,套用gin的話

Gin is a web framework written in Go (Golang). It features a martini-like API with much better performance, up to 40 times faster thanks to httprouter. If you need performance and good productivity, you will love Gin.

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM