前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Gin-Web-Framework官方指南中文(上篇)

Gin-Web-Framework官方指南中文(上篇)

作者头像
小诚信驿站
发布2019-10-30 21:49:13
3K0
发布2019-10-30 21:49:13
举报

英文文档

GitHub

一、介绍

Gin是什么?

Gin是一个用Golang写的HTTP web框架。它具有类似于Martini的API,性能更高-快40倍。 如果需要很好的性能,那么肯定是推荐现在使用Gin。

特点:

快:

基于基数树的路由,占用内存少。 没有反射。 可预测的API性能

中间件支持:

进来的HTTP请求被中间件链处理然后最后执行。举个例子比如日志,鉴权,解压等行为拦截操作之后,将信息发送到DB

奔溃无影响:

gin能捕获在HTTP请求的异常并且恢复,通过这种方式,你的服务可以保证高可用,作为一个例子,他可以提供上报异常监控

JSON校验:

Gin能解析并且校验请求中的JSON,比如校验某些必填入值

路由分组:

更好路由,鉴权必要或者非必要,不同的API版本,另外,分组可以无限嵌套并且对性能不会造成影响

错误管理:

Gin提供了一个便利的方式去收集所有的错误发生在HTTP请求中的,最后一个中间件可以写他们到一个日志文件或者一个数据库并且通过网络发送传输。

内置渲染:

Gin提供了一个简单实用渲染的JSON、XML和HTML的方式

可扩展性:

创建一个新的中间件非常容易,仅仅是看看示例代码就能明白。

二、快速开始入门

前提条件:

go的版本1.9+,未来不再支持1.7或者1.8

安装:

首先是建立在已经安装golang和设置好了你的工作目录空间。

这里需要注意的一点是所有通过go下载的GitHub内容都在$GOPATH/src/github.com目录下

下载安装gin

代码语言:javascript
复制
 go get -u github.com/gin-gonic/gin

代码引入包

代码语言:javascript
复制
import "github.com/gin-gonic/gin"

可选项,如果需要使用http.StatusOK

代码语言:javascript
复制
import "net/http"

初始化本地仓库

使用一个vendor工具比如Govendor

代码语言:javascript
复制
 go get github.com/kardianos/govendor

创建项目文件夹并且打开

代码语言:javascript
复制
mkdir -p $GOPATH/src/github.com/myusername/project && cd "$_"

使用vendor初始化你的项目并且添加gin框架(如果这个时候报错找不到你的govendor,则你需要先执行一个命令行设置下你的执行gopath环境目录)

代码语言:javascript
复制
export PATH=$PATH:$(go env GOPATH)/bin
代码语言:javascript
复制
govendor init
govendor fetch github.com/gin-gonic/gin@v1.3

复制一个项目模板到项目(很可能会504网关超时)

代码语言:javascript
复制
curl https://raw.githubusercontent.com/gin-gonic/examples/master/basic/main.go > main.go

运行项目

代码语言:javascript
复制
go run main.go

开始入手项目

创建一个go 文件比如example.go

代码语言:javascript
复制
touch example.go

内容写入以下代码

代码语言:javascript
复制
package main

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() // listen and serve on 0.0.0.0:8080
}

然后运行代码,命令行

代码语言:javascript
复制
go run example.go

或者Goland

三、基准测试

可以参考指标-测试结果

Gin的默认的JSON包encoding/json

如果想用其他的jsoniter,可以

代码语言:javascript
复制
go build -tags=jsoniter . 

四、如何发布

Rendor发布

Google App Engine发布

参考文档

五、测试:如何写测试用例

使用net/http/httptest包来测试HTTP请求

假设你的代码服务

代码语言:javascript
复制
package main

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")
}

测试代码命名xxx_test.go

代码语言:javascript
复制
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())
}

本文系外文翻译,前往查看

如有侵权,请联系?cloudcommunity@tencent.com?删除。

本文系外文翻译前往查看

如有侵权,请联系?cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、介绍
    • Gin是什么?
      • 特点:
        • 快:
        • 中间件支持:
        • 奔溃无影响:
        • JSON校验:
        • 路由分组:
        • 错误管理:
        • 内置渲染:
        • 可扩展性:
        • 前提条件:
        • 安装:
        • 下载安装gin
        • 代码引入包
        • 可选项,如果需要使用http.StatusOK
    • 二、快速开始入门
      • 初始化本地仓库
        • 开始入手项目
        • 三、基准测试
        • 四、如何发布
        • 五、测试:如何写测试用例
        相关产品与服务
        消息队列 TDMQ
        消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
        http://www.vxiaotou.com