Go最火的Gin框架简单入门

Gin 介绍

Gin 是一个 Golang 写的 web 框架,具有高性能的优点,,基于 httprouter,它提供了类似martini但更好性能(路由性能约快40倍)的API服务。官方地址:https://github.com/gin-gonic/gin

安装框架

配置好GOPATH,建议自己在GOPATH建个项目,这里我以Go_GinStart作为项目目录。

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

安装mysql驱动

$ go get github.com/go-sql-driver/mysql

项目组织结构

在项目根目录创建下面三个文件夹,apis,databases和models,并在文件夹内创建文件。

  • apis文件夹存放我们的handler函数
  • models文件夹用来存放我们的数据模型

 1 package database
 2
 3 import (
 4  "database/sql"
 5  _ "github.com/go-sql-driver/mysql"
 6  "log"
 7 )
 8
 9 var SqlDB *sql.DB
10
11 func init() {
12  var err error
13  SqlDB, err = sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/test?parseTime=true")
14  if err != nil {
15   log.Fatal(err.Error())
16  }
17  err = SqlDB.Ping()
18  if err != nil {
19   log.Fatal(err.Error())
20  }
21 }

mysql.go

 1 package models
 2
 3 import (
 4  "log"
 5  db "newland/database"
 6 )
 7
 8 type Person struct {
 9  Id        int    `json:"id" form:"id"`
10  FirstName string `json:"first_name" form:"first_name"`
11  LastName  string `json:"last_name" form:"last_name"`
12 }
13
14 func (p *Person) AddPerson() (id int64, err error) {
15  rs, err := db.SqlDB.Exec("INSERT INTO person(first_name, last_name) VALUES (?, ?)", p.FirstName, p.LastName)
16  if err != nil {
17   return
18  }
19  id, err = rs.LastInsertId()
20  return
21 }
22
23 func (p *Person) GetPersons() (persons []Person, err error) {
24  persons = make([]Person, 0)
25  rows, err := db.SqlDB.Query("SELECT id, first_name, last_name FROM person")
26  defer rows.Close()
27
28  if err != nil {
29   return
30  }
31
32  for rows.Next() {
33   var person Person
34   rows.Scan(&person.Id, &person.FirstName, &person.LastName)
35   persons = append(persons, person)
36  }
37  if err = rows.Err(); err != nil {
38   return
39  }
40  return
41 }

models文件夹下的person.go

 1 package apis
 2
 3 import (
 4  "net/http"
 5  "log"
 6  "fmt"
 7  "github.com/gin-gonic/gin"
 8  . "aze.org/models"
 9 )
10
11 func IndexApi(c *gin.Context) {
12  c.String(http.StatusOK, "It works")
13 }
14
15 func AddPersonApi(c *gin.Context) {
16  firstName := c.Request.FormValue("first_name")
17  lastName := c.Request.FormValue("last_name")
18
19  p := Person{FirstName: firstName, LastName: lastName}
20
21  ra, err := p.AddPerson()
22  if err != nil {
23   log.Fatalln(err)
24  }
25  msg := fmt.Sprintf("insert successful %d", ra)
26  c.JSON(http.StatusOK, gin.H{
27   "msg": msg,
28  })
29 }

apis的person.go

 1 package main
 2
 3 import (
 4  "github.com/gin-gonic/gin"
 5  . "aze.orgd/apis"
 6 )
 7
 8 func initRouter() *gin.Engine {
 9  router := gin.Default()
10
11  router.GET("/", IndexApi)
12
13  router.POST("/person", AddPersonApi)
14
15  router.GET("/persons", GetPersonsApi)
16
17  router.GET("/person/:id", GetPersonApi)
18
19  router.PUT("/person/:id", ModPersonApi)
20
21  router.DELETE("/person/:id", DelPersonApi)
22
23  return router
24 }

router.go

package main

import (
 db "aze.org/database"
)

func main() {
 defer db.SqlDB.Close()
 router := initRouter()
 router.Run(":8000")
}

运行项目,

go run main.go router.go
或者
如果是最终编译二进制项目,则运行
go build -o app    //生成app文件直接./app就可以运行项目了。

参考教程:

Gin框架 详细文档地址:https://godoc.org/github.com/gin-gonic/gin

原文地址:https://www.cnblogs.com/Paul-watermelon/p/11146054.html

时间: 2024-11-09 19:23:17

Go最火的Gin框架简单入门的相关文章

Springmvc整合tiles框架简单入门示例(maven)

Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积分下载): http://download.csdn.net/detail/zhangbing2434/9435460(这里用的是Idea,eclipse,导入的时候可能会有些差异) 1.tiles依赖的jar包:     maven代码: <dependency> <groupId>

GitHub这么火,程序员你不学学吗? 超简单入门教程 【转载】

本GitHub教程旨在能够帮助大家快速入门学习使用GitHub. 本文章由做全栈攻城狮-写代码也要读书,爱全栈,更爱生活.原创.如有转载,请注明出处. GitHub是什么? GitHub首先是个分布式的版本控制库.通过使用git,可以方便的记录代码版本. 因国内外大量著名的项目,都开始搬迁到github.它又可以称为开源代码社区. github还是学习的好地方,学习优秀的代码. 可对其他项目中有bug的地方进行改进提交,集合众人的力量促进软件的优化改善. github何其火热,截至2015年2月

nodejs框架express4.2 简单入门

Perface 今天看了一些nodejs,<nodejs开发指南>.看到了expres的时候,因为那本书用的express版本跟我的不一样,导致很多功能不能实现.所以就各种google,现在就把这个流程记录下来,遇见的bug和一些原理. 要玩express就要装nodejs,如果你的操作系统是centos6.5可以参考我之前写的博客centos6.5安装nodejs.其他操作系统也大同小异,可以看Node Installation Bug 1 Express Command not found

Golang 的Gin框架入门教学

学习Golang差不多有一个星期时间,开始自己做点小功能,练练手. Gin 介绍 Gin 是一个 Golang 写的 web 框架,具有高性能的优点,,基于 httprouter,它提供了类似martini但更好性能(路由性能约快40倍)的API服务.官方地址:https://github.com/gin-gonic/gin 安装框架 配置好GOPATH,建议自己在GOPATH建个项目,这里我以aze.org作为项目目录. $ go get github.com/gin-gonic/gin 安装

基于gin框架搭建的一个简单的web服务

刚把go编程基础知识学习完了,学习的时间很短,可能还有的没有完全吸收.不过还是在项目中发现知识,然后在去回顾已学的知识,现在利用gin这个web框架做一个简单的CRUD操作. 1.Go Web框架的技术选型 Top 6 web frameworks for Go as of 2017,可以看看这个go语言中Web框架的对比和老大的推荐,我选择gin框架作为学习go语言的框架. image.png 2.Gin介绍 gin框架的中文文档,这个文档相当好,清晰明了解释gin框架的整个用法.下面是gin

CQRS简单入门(Golang)

一.简单入门之入门 CQRS/ES和领域驱动设计更搭,故整体分层沿用经典的DDD四层.其实要实现的功能概要很简单,如下图. 基础框架选择了https://github.com/looplab/eventhorizon,该框架功能强大.示例都挺复杂的,囊括的概念太多,不太适合入门,所以决定在其基础上,进行简化. 二.简化使用eventhorizon Eventhorizon已经提供了详尽的使用案例(https://github.com/looplab/eventhorizon/tree/maste

程序员,一起玩转GitHub版本控制,超简单入门教程 干货2

本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注头条号.每日更新.也可以添加小编微信:fullstackCourse.一起交流,获取最新全栈教程信息.因为FQ原因,不能下载客户端的同仁,可以关注后回复“GitHub客户端”获取安装软件. 上篇教程:GitHub这么火,程序员你不学学吗? 超简单入门教程 干货 GitHub概念部分出现了一丝纰漏.为

Asp.Net MVC学习总结(一)——Asp.Net MVC简单入门

出处:http://www.cnblogs.com/SeeYouBug/p/6401737.html 一.MVC简单入门 1.1.MVC概念 视图(View) 代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML.XML和Applet. 模型(Model) 表示用户对其数据的操作的一个封转.可以分为视图模型(view model)和领域模型(domain models),视图模型就是在视图与控制器之间传输数据的一个封转,而领域模型就是业务逻辑,后台数据模型等的一个集

MvvmLight框架使用入门(四)

本篇我们着重介绍ViewModelBase,演示Set和RaisePropertyChanged方法的使用,以及就Cleanup方法释放资源展开讨论. ICleanup 接口.实现该接口的ViewModel需要在Cleanup方法里释放资源,特别是-= event ObservableObject 该类实现了INotifyPropertyChanged接口,定义了一个可通知的对象基类,供ViewModelBase继承 ViewModelBase 继承自ObservableObject,   IC