可以参考官网安装gin
https://github.com/gin-gonic/gin
使用go mod,若遇到golang.org包无法下载的问题请参考:https://blog.csdn.net/wz122330/article/details/89493467
[wangzheng@wangzheng-centos myweb]$ cat main.go
package main
import (
"gopkg.in/gin-gonic/gin.v1"
"net/http"
)
func main(){
router := gin.Default()
router.GET("/", func(c *gin.Context) {
c.String(http.StatusOK, "Hello World")
})
router.Run(":8000")
}
[wangzheng@wangzheng-centos myweb]$
[wangzheng@wangzheng-centos myweb]$ go mod init
go: modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help modules'
[wangzheng@wangzheng-centos myweb]$ export GO111MODULE=on
[wangzheng@wangzheng-centos myweb]$ go mod init
go: creating new go.mod: module ginLearn/myweb
[wangzheng@wangzheng-centos myweb]$ ls
controller go.mod main.go model service
[wangzheng@wangzheng-centos myweb]$ cat go.mod
module ginLearn/myweb
go 1.12
[wangzheng@wangzheng-centos myweb]$
[wangzheng@wangzheng-centos myweb]$ go test
go: finding github.com/gin-contrib/sse latest
go: finding github.com/gin-gonic/gin/binding latest
go: finding github.com/gin-gonic/gin/render latest
go: finding github.com/gin-gonic/gin/json latest
go: golang.org/x/[email protected]: unrecognized import path "golang.org/x/sys" (https fetch: Get https://golang.org/x/sys?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
go: error loading module requirements
[wangzheng@wangzheng-centos myweb]$ go mod edit -replace=golang.org/x/[email protected]=github.com/golang/sys@latest
[wangzheng@wangzheng-centos myweb]$ cat go.mod
module ginLearn/myweb
go 1.12
replace golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223 => github.com/golang/sys latest
[wangzheng@wangzheng-centos myweb]$ go test
go: finding github.com/golang/sys latest
go: finding github.com/gin-contrib/sse latest
go: finding github.com/gin-gonic/gin/binding latest
go: finding github.com/gin-gonic/gin/render latest
go: finding github.com/gin-gonic/gin/json latest
go: downloading github.com/golang/sys v0.0.0-20190424175732-18eb32c0e2f0
go: finding github.com/ugorji/go/codec latest
go: extracting github.com/golang/sys v0.0.0-20190424175732-18eb32c0e2f0
go: finding github.com/golang/protobuf/proto latest
? ginLearn/myweb [no test files]
[wangzheng@wangzheng-centos myweb]$ go build
[wangzheng@wangzheng-centos myweb]$ ls
controller go.mod go.sum main.go model myweb service
[wangzheng@wangzheng-centos myweb]$ ./myweb
[GIN-debug] [WARNING] Now Gin requires Go 1.6 or later and Go 1.7 will be required soon.
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
[GIN-debug] GET / --> main.main.func1 (3 handlers)
[GIN-debug] Listening and serving HTTP on :8000
可参考官网安装https://github.com/swaggo/gin-swagger
[wangzheng@wangzheng-centos myweb]$ go get github.com/swaggo/swag/cmd/swag
如有问题请参考:https://blog.csdn.net/wz122330/article/details/89510092
[wangzheng@wangzheng-centos myweb]$ swag init
2019/04/24 22:32:35 Generate swagger docs....
2019/04/24 22:32:35 Generate general API Info
2019/04/24 22:32:35 create docs.go at docs/docs.go
2019/04/24 22:32:35 create swagger.json at docs/swagger.json
2019/04/24 22:32:35 create swagger.yaml at docs/swagger.yaml
[wangzheng@wangzheng-centos myweb]$ ls docs/
docs.go swagger.json swagger.yaml
[wangzheng@wangzheng-centos myweb]$
[wangzheng@wangzheng-centos src]$ go get -u github.com/swaggo/gin-swagger
[wangzheng@wangzheng-centos src]$ go get -u github.com/swaggo/gin-swagger/swaggerFiles
package main
import (
_ "ginLearn/myweb/docs"
router "ginLearn/myweb/routers"
"github.com/swaggo/gin-swagger"
"github.com/swaggo/gin-swagger/swaggerFiles"
)
// @title Swagger Example API
// @version 1.0
// @description This is a sample server Petstore server.
// @termsOfService http://swagger.io/terms/
// @contact.name API Support
// @contact.url http://www.swagger.io/support
// @contact.email [email protected]
// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
// @host 192.168.0.5:8080
func main() {
router:=router.InitRouter()
// use ginSwagger middleware to
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
router.Run()
}
package routers
import (
"github.com/gin-gonic/gin"
. "ginLearn/myweb/controllers" //api部分
)
func InitRouter() *gin.Engine{
router := gin.Default()
//Hello World
router.GET("/hello", GetDataList)
router.POST("/user/add", InsertUser)
return router
}
package controllers
import (
"net/http"
"github.com/gin-gonic/gin"
db "ginLearn/myweb/db"
user "ginLearn/myweb/models"
"strconv"
)
// @列表页面数据
// @Description get data
// @Accept json
// @Produce json
// @Success 200 {string} string "hello"
// @Router /hello/ [get]
func GetDataList(c *gin.Context) {
//返回结果
c.JSON(http.StatusOK, gin.H{
"data": "hello",
})
}
// @增加用户
// @Description add user
// @Accept json
// @Produce json
// @Param Id query int false "int valid"
// @Param Name query string false "string valid"
// @Param Age query int false "int valid"
// @Router /user/add [post]
func InsertUser(c *gin.Context) {
id, _ := strconv.Atoi(c.Request.FormValue("Id"))
age, _ := strconv.Atoi(c.Request.FormValue("Age"))
u := user.User{Id : id, Name : c.Request.FormValue("Name"), Age : age}
db.InsertUser(&u)
}
package db
import (
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
"log"
user "ginLearn/myweb/models"
"fmt"
)
func NewConn() *gorm.DB {
db, err := gorm.Open("mysql", "root:111111@tcp(192.168.0.69:12345)/test?parseTime=true")
// defer db.Close()
if err != nil {
log.Fatal(err.Error())
}
return db
}
func InsertUser(u *user.User) {
db := NewConn()
fmt.Println("开始创建...")
if !db.HasTable(&user.User{}) {
if err := db.Set("gorm:table_options", "ENGINE=InnoDB DEFAULT CHARSET=utf8").CreateTable(&user.User{}).Error; err != nil {
panic(err)
}
}
fmt.Println("创建完了")
fmt.Println("插入用户...")
db.Create(u)
defer db.Close()
}
package models
type User struct {
Id int `gorm:"primary_key"`
Name string `gorm:"type:varchar(256);not null;"`
Age int
}
执行go build,若出现错误,则使用go mod edit -replace进行替换。
[wangzheng@wangzheng-centos myweb]$ go run main.go
[GIN-debug] [WARNING] Now Gin requires Go 1.6 or later and Go 1.7 will be required soon.
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
- using env: export GIN_MODE=release
- using code: gin.SetMode(gin.ReleaseMode)
[GIN-debug] GET /hello --> ginLearn/myweb/controllers.GetDataList (3 handlers)
[GIN-debug] POST /user/add --> ginLearn/myweb/controllers.InsertUser (3 handlers)
[GIN-debug] GET /swagger/*any --> github.com/swaggo/gin-swagger.WrapHandler.func1 (3 handlers)
[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default
[GIN-debug] Listening and serving HTTP on :8080
[GIN] 2019/04/25 - 05:45:13 | 200 | 423.949µs | 192.168.0.8 | GET /swagger/index.html
[GIN] 2019/04/25 - 05:45:13 | 200 | 4.913887ms | 192.168.0.8 | GET /swagger/swagger-ui.css
[GIN] 2019/04/25 - 05:45:13 | 200 | 10.532505ms | 192.168.0.8 | GET /swagger/swagger-ui-standalone-preset.js
[GIN] 2019/04/25 - 05:45:13 | 200 | 28.1525ms | 192.168.0.8 | GET /swagger/swagger-ui-bundle.js
[GIN] 2019/04/25 - 05:45:13 | 200 | 230.546µs | 192.168.0.8 | GET /swagger/doc.json
[GIN] 2019/04/25 - 05:45:13 | 200 | 55.106µs | 192.168.0.8 | GET /swagger/favicon-32x32.png
开始创建...
创建完了
插入用户...
[GIN] 2019/04/25 - 05:45:24 | 200 | 25.103268ms | 192.168.0.8 | POST /user/add?Id=3&Name=sd&Age=22
项目代码:https://github.com/wz18567908/ginLearn/tree/master/myweb