看看Gin框架是如何实现的

本文深入探讨Gin框架,从基本使用到Engine核心和路由处理。Engine作为框架实例,包含复用器、中间件和配置。通过New创建Engine,使用logger和recovery中间件。 Gin利用sync.pool优化context复用,提高性能。路由部分,Engine通过RouterGroup处理RESTful路由,使用树结构管理。文章逐步揭示Gin路由注册和处理的内部机制。
摘要由CSDN通过智能技术生成

基本使用

gin是一个高性能的golang web框架,它的代码其实很少,相对于spring来说,搞懂gin真是砍瓜切菜

先来看一下gin的基础用法

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

func Init() {
	r := gin.Default()
	initRoute(r)
	r.Run()
}

func initRoute(r *gin.Engine) {
	r.GET("ping", handler)
}

func handler(ctx *gin.Context) {
	ctx.String(200, "Hello World!")
}

这个例子里,我们启动了一个简单的web服务,使用gin.Default创建一个Engine对象,Engine是Gin核心中的核心,我们后面会具体讲解。之后通过initRoute注册一个路由,当访问localhost:8080/ping的时候,就会返回Hello World!。

最后调用r.run让服务启动。只需要很少的几行代码,就能通过gin启动一个web服务。我们主要探索它的实现原理,关于gin更多的语言特性和用法这里就不细说了,更多例子可以前往Gin Examples.

Engine

官网解释:Engine是框架的实例,它包含了复用器、中间件和各类配置。

type Engine struct {
	// 路由组
	RouterGroup

	// 如果设置为true,如果/foo/没有匹配到路由,自动重定向到/foo
	RedirectTrailingSlash bool

	// 和RedirectTrailingSlash类似,对path做一些修正
	RedirectFixedPath bool

	HandleMethodNotAllowed bool

	ForwardedByClientIP bool

	// DEPRECATED
	AppEngine bool

	// 是否通过url.RawPath来获取参数
	UseRawPath bool

	// If true, the path value will be unescaped.
	// If UseRawPath is false (by default), the UnescapePathValues effectively is true,
	// as url.Path go
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值