Gin教程--Gin初始(一)

Gin教程–Gin初识(一)

一、Gin介绍

1.1 什么是Gin?

Gin是一个使用Go语言开发的Web框架。

 

1.2 Gin有什么特点?

  1. 快速
    基于Radix树的路由,小内存占用。没有反射。可预测的API性能。

  2. 支持中间件
    传入的HTTP请求可以由一系列中间件和最终操作来处理。

  3. Crash处理
    Gin可以catch一个发生在HTTP请求中的panic并recover它。这样,你的服务器将始终可用。

  4. JSON验证
    Gin可以解析并验证请求的JSON。

  5. 路由组
    Gin帮助您更好地组织您的路由。此外,路由分组可以无限嵌套而不降低性能。

  6. 错误管理
    Gin提供了一种方便的方法来收集HTTP请求期间发生的所有错误。最终,中间件可以将它们写入日志文件,数据库并通过网络发送。

  7. 内置渲染
    Gin为JSON,XML和HTML渲染提供了易于使用的API。

  8. 可扩展性
    新建一个中间件非常简单。

 

1.3 Gin可以做什么?

  1. 开发API
  2. 直接在框架中

 
 
 

二、开发环境

序号名称内容版本号备注
1window系统V10
2git代码管理工具V2.37.0
3golang语言环境V1.16.3
4ginv1.9.0

 
 
 

三、开始项目

3.1 创建一个项目并初始化Git和Go Mod

# 初始化git仓库
git init

# 初始化go mod
go mod init

# 添加go的gin包
go get github.com/gin-gonic/gin

添加.gitignore文件

.idea
.env

vendor/
build/
runtime/

 

3.2 开始创建项目子文件夹

app
开发使用的文件夹,app下创建控制器文件夹(controllers)、模型文件夹(models)、帮助文件夹(helpers)、中间件文件夹(middlewares)、路由文件夹(routers)、脚本文件夹(script)

build
打包文件夹

cmd
命令行文件夹

config
配置文件存储

public
公共资源存储,一般是存放图片、csv、Excel等文件

runtime
运行文件夹,存储一些log等

vendor
存储引入的包

 

3.3 添加第一个Golang主文件

项目根目录下创建main.go文件

package main

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

func setupRouter() *gin.Engine {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.String(200, "pong")
	})
	return r
}

func main() {
	r := setupRouter()
	r.Run(":8080")
}

 

3.4 运行程序

go run main.go

 

3.5 测试

创建测试用例

package main

import (
	"net/http"
	"net/http/httptest"
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestPingRoute(t *testing.T) {
	router := setupRouter()

	w := httptest.NewRecorder()
	req, _ := http.NewRequest("GET", "/ping", nil)
	router.ServeHTTP(w, req)

	assert.Equal(t, 200, w.Code)
	assert.Equal(t, "pong", w.Body.String())
}

 

3.6 项目打包

# Windows
go build -o build/ZhaoGodService.exe main.go

# Linux
go env -w CGO_ENABLED=0 GOOS=linux GOARCH=amd64
go build -o build/ZhaoGodService main.go

 
 
 
更多内容请去公众号【老罗分享】获取
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值