golang web框架gin使用教程

momo_8889 · · 756 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Installation

To install Gin package, you need to install Go and set your Go workspace first.

The first need Go installed (version 1.12+ is required), then you can use the below Go command to install Gin.

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

Import it in your code:

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

(Optional) Import net/http. This is required for example if using constants such as http.StatusOK.

import"net/http"

Quick start

# assume the following codes in example.go file$ cat example.go

packagemainimport"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()// listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")}

# run example.goand visit0.0.0.0:8080/ping (forwindows"localhost:8080/ping") on browser$gorun example.go

Using GET, POST, PUT, PATCH, DELETE and OPTIONS

func main(){// Creates a gin router with default middleware:// logger and recovery (crash-free) middlewarerouter:=gin.Default()router.GET("/someGet",getting)router.POST("/somePost",posting)router.PUT("/somePut",putting)router.DELETE("/someDelete",deleting)router.PATCH("/somePatch",patching)router.HEAD("/someHead",head)router.OPTIONS("/someOptions",options)// By default it serves on :8080 unless a// PORT environment variable was defined.router.Run()// router.Run(":3000") for a hard coded port}

Parameters in path

func main(){router:=gin.Default()// This handler will match /user/john but will not match /user/ or /userrouter.GET("/user/:name",func(c *gin.Context){name:=c.Param("name")c.String(http.StatusOK,"Hello %s",name)})// However, this one will match /user/john/ and also /user/john/send// If no other routers match /user/john, it will redirect to /user/john/router.GET("/user/:name/*action",func(c *gin.Context){name:=c.Param("name")action:=c.Param("action")message:=name+" is "+actionc.String(http.StatusOK,message)})// For each matched request Context will hold the route definitionrouter.POST("/user/:name/*action",func(c *gin.Context){c.FullPath()=="/user/:name/*action"// true})router.Run(":8080")}

Querystring parameters

funcmain() {router :=gin.Default()// Query string parameters are parsed using the existing underlying request object.// The request responds to a url matching:  /welcome?firstname=Jane&lastname=Doerouter.GET("/welcome",func(c*gin.Context) {firstname:=c.DefaultQuery("firstname","Guest")lastname:=c.Query("lastname")// shortcut for c.Request.URL.Query().Get("lastname")c.String(http.StatusOK,"Hello %s %s",firstname,lastname)})router.Run(":8080")}

Multipart/Urlencoded Form

funcmain() {router :=gin.Default()router.POST("/form_post",func(c*gin.Context) {message:=c.PostForm("message")nick:=c.DefaultPostForm("nick","anonymous")c.JSON(200, gin.H{"status":"posted","message":message,"nick":nick,})})router.Run(":8080")}

Another example: query + post form

POST/post?id=1234&page=1HTTP/1.1Content-Type: application/x-www-form-urlencodedname=manu&message=this_is_great

funcmain() {router :=gin.Default()router.POST("/post",func(c*gin.Context) {id:=c.Query("id")page:=c.DefaultQuery("page","0")name:=c.PostForm("name")message:=c.PostForm("message")fmt.Printf("id: %s; page: %s; name: %s; message: %s",id,page,name,message)})router.Run(":8080")}

id:1234;page:1;name:manu;message:this_is_great

Map as querystring or postform parameters

POST/post?ids[a]=1234&ids[b]=helloHTTP/1.1Content-Type: application/x-www-form-urlencodednames[first]=thinkerou&names[second]=tianou

funcmain() {router :=gin.Default()router.POST("/post",func(c*gin.Context) {ids:=c.QueryMap("ids")names:=c.PostFormMap("names")fmt.Printf("ids: %v; names: %v",ids,names)})router.Run(":8080")}

ids: map[b:helloa:1234];names: map[second:tianoufirst:thinkerou]

更多Gin使用请移步:Gin安装使用详细教程


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:momo_8889

查看原文:golang web框架gin使用教程

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

756 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传