import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run("0.0.0.0:9090") }
import ( "github.com/gin-gonic/gin" "net/http" ) type Result struct { Message string `json:"message"` Code int `json:"code"` } func handleUserInfo(c *gin.Context) { var result Result = Result{ Message: "hello", Code: 0, } c.JSON(http.StatusOK,result) } func main() { r := gin.Default() r.GET("/user/info", handleUserInfo) r.Run("0.0.0.0:9090") }
import ( "github.com/gin-gonic/gin" "net/http" ) type Result struct { Message string `json:"message"` Code int `json:"code"` } type UserInfo struct { Result UserName string `json:"username"` Passwd string `json:"passwd"` } func handleUserParams(c *gin.Context) { //查詢類接口 username := c.Query("username") passwd := c.DefaultQuery("passwd","adcdefg") var result UserInfo = UserInfo{ Result{ Message: "success", Code: 200, }, username, passwd, } c.JSON(http.StatusOK,result) } func handleUserInfo(c *gin.Context) { //路由類接口 username := c.Param("username") passwd := c.Param("passwd") var result UserInfo = UserInfo{ Result{ Message: "success", Code: 200, }, username, passwd, } c.JSON(http.StatusOK,result) } func main() { r := gin.Default() r.GET("/user/info", handleUserParams) r.GET("/user/info/:username/:passwd", handleUserInfo) r.Run("0.0.0.0:9090") }
獲取表單參數html
import ( "github.com/gin-gonic/gin" "net/http" ) type Result struct { Message string `json:"message"` Code int `json:"code"` } type UserInfo struct { Result UserName string `json:"username"` Passwd string `json:"passwd"` } func handleUserInfo(c *gin.Context) { username := c.PostForm("username") passwd := c.PostForm("passwd") var result UserInfo = UserInfo{ Result: Result{ Message: "success", Code: 200, }, UserName: username, Passwd: passwd, } c.JSON(http.StatusOK,result) } func main() { r := gin.Default() r.POST("/user/info",handleUserInfo) r.Run(":9090") }
func handleUpload(c *gin.Context) { file,err := c.FormFile("testfile") if err != nil { fmt.Printf("upload file faild,err:%v\n",err) return } //文件上傳路徑 filename := fmt.Sprintf("/Users/wanghui/go/src/oldBoy/day8/tmp/%s",file.Filename) //文件保存 err = c.SaveUploadedFile(file,filename) if err != nil { fmt.Printf("save file faild,err:%v\n",err) return } //狀態返回 c.JSON(http.StatusOK,"file upload success") } func main() { r := gin.Default() r.POST("/file/upload",handleUpload) r.Run(":9090") }
func multiHandleUpload(c *gin.Context) { //多文件上傳 form,err := c.MultipartForm() if err != nil { fmt.Printf("upload file faild,err:%v\n",err) return } files := form.File["testfile"] for _,file := range files { filename := fmt.Sprintf("/Users/wanghui/go/src/oldBoy/day8/tmp/%s",file.Filename) err = c.SaveUploadedFile(file,filename) if err != nil { fmt.Printf("save file faild,err:%v\n",err) return } } //狀態返回 c.JSON(http.StatusOK,"file upload success") } func main() { r := gin.Default() r.POST("/file/upload",handleUpload) r.POST("/files",multiHandleUpload) r.Run(":9090") }
經過postman上傳文件git
func main() { r := gin.Default() v1Group := r.Group("/v1") v1Group.POST("/user/info",handleUserInfo) v1Group.POST("/user/info2",handleUserInfo) r.Run(":9090") }
type UserInfo struct { UserName string `form:"username" json:"username" binding:"required"` Passwd string `form:"passwd" json:"passwd" binding:"required"` Age int `form:"age" json:"age" binding:"required"` Sex string `form:"sex" json:"sex" binding:"required"` } func PostUserInfo(c *gin.Context) { var UserInfo UserInfo //表單綁定,使用指針 err := c.ShouldBind(&UserInfo) if err != nil { return } c.JSON(http.StatusOK,UserInfo) } func PostUserInfoJson(c *gin.Context) { var UserInfo UserInfo //表單綁定,使用指針 err := c.ShouldBindJSON(&UserInfo) if err != nil { return } c.JSON(http.StatusOK,UserInfo) } func GetUserInfoJson(c *gin.Context) { var UserInfo UserInfo //表單綁定,使用指針 err := c.ShouldBindJSON(&UserInfo) if err != nil { return } c.JSON(http.StatusOK,UserInfo) } func main() { r := gin.Default() v1Group := r.Group("/v1") v1Group.POST("/user/infos",PostUserInfo) v1Group.POST("/user/infojson",PostUserInfoJson) v1Group.GET("/user/info",GetUserInfoJson) r.Run(":9090") }
type UserInfo struct { UserName string `form:"username" json:"username" binding:"required"` Passwd string `form:"passwd" json:"passwd" binding:"required"` } func GetUserInfoJson(c *gin.Context) { var userInfo = &UserInfo{ UserName: "zhansan", Passwd: "aaaa", } c.XML(200,userInfo) } func main() { r := gin.Default() v1Group := r.Group("/v1") v1Group.GET("/user/info",GetUserInfoJson) r.Run(":9090") }
{{ define "index.tmpl" }} <html> {{ . }} <p>Using posts/index.tmpl</p> </html> {{ end }}
func HandleHtmml(c *gin.Context) { c.HTML(200,"index.tmpl","mmmmmmmm") } func main() { r := gin.Default() r.LoadHTMLGlob("./templates/*") r.GET("/user/info",HandleHtmml) r.Run(":9090") }
func StatCost(c *gin.Context) { //中間件 start := time.Now() fmt.Printf("start \n") c.Next() lattacy := time.Since(start) fmt.Printf("cost Time is %dms\n", lattacy/1000/1000) } func funcHello(c *gin.Context) { fmt.Printf("request start\n") time.Sleep(time.Second * 3) c.JSON(http.StatusOK, "hello world") } func main() { r := gin.Default() r.Use(StatCost) r.GET("/hello", funcHello) r.Run(":9090") }