Gin框架完全使用指南 | Gin框架创建Web服务器的几种方式

公众号:程序员读书,欢迎关注

安装好Gin框架之后,要如何启动或运行Gin框架呢?简单来说分两步:

  • 创建gin.Engine实例
  • 调用gin.EngineRun()开始监听某个端口,接收请求。

那么如何创建一个gin.Engine实例呢?有两种方式:

  • 调用gin.New()函数返回一个gin.Engine实例。
  • 调用gin.Default()函数返回一个gin.Engine实例。

以上两种创建方式有什么不同呢?下面我们来仔细探究一下。

创建gin.Engine实例

调用gin.New()方法或者gin.Default()都会返回一个gin.Engline实例:

go 复制代码
 package main
 ​
 import (
   "net/http"
   "github.com/gin-gonic/gin"
 )
 ​
 func main() {
   //使用New()函数创建Engine实例
   engine := gin.New()
   //engine := gin.Default()
   engine.Run()
 }

那么这两个函数创建的gin.Engine实例有什么不同呢?

使用gin.Default()函数创建的gin.Engine默认会带上日志(gin.Logger())和崩溃捕捉(gin.Recovery())这两个中间件,而gin.New()创建的则没有,因此下面的代码是等价的:

css 复制代码
 engine := gin.Default()
 //相当于下面的语句
 engine := gin.New()
 engine.Use(gin.Logger(),gin.Recovery())

有关中间件的知识,我们后续文章再介绍!

启动服务器

创建好gin.Engine实例后,调用该实例的Run()方法就可以启动服务器了,在上面的示例中,我们调用Run()方法并没有传递参数,该方法可以接收一个端口号作为参数:

arduino 复制代码
 engine.Run(":3000")

如果没有传端口号,服务器默认在8080端号启动。

实际上,gin.Engine结构体实现了http.Handler接口:

go 复制代码
 type Handler interface {
   ServeHTTP(ResponseWriter, *Request)
 }

因此可以与net/http库配合使用:

css 复制代码
 func main() {
   engine := gin.Default()
   http.ListenAndServe(":8080", engine)
 }

当我们想更好地配置HTTP相关参数时,与net/http库配合使用是一种更好的选择:

css 复制代码
 func main() {
   engine := gin.Default()
   s := &http.Server{
     Addr:           ":3000",
     Handler:        engine,
     ReadTimeout:    10 * time.Second,
     WriteTimeout:   10 * time.Second,
     MaxHeaderBytes: 1 << 20,
   }
   s.ListenAndServe()
 }

小结

只是把服务器启动起来,服务器还不能接收请求,还差什么呢?答案是路由,我们在下一篇文章中再来探究。

相关推荐
汤姆yu35 分钟前
基于springboot的运动服服饰销售购买商城系统
java·spring boot·后端
期待のcode38 分钟前
Springboot数据层开发—Springboot整合JdbcTemplate和Mybatis
spring boot·后端·mybatis
Jul1en_40 分钟前
【Spring】实现验证码功能
java·后端·spring
IT_陈寒1 小时前
Java并发编程避坑指南:从volatile到ThreadLocal,8个实战案例解析线程安全核心原理
前端·人工智能·后端
Victor3561 小时前
Netty(10)Netty的粘包和拆包问题是什么?如何解决它们?
后端
全栈独立开发者1 小时前
软考架构师实战:Spring Boot 3.5 + DeepSeek 开发 AI 应用,上线 24 小时数据复盘(2C1G 服务器抗压实录)
java·spring boot·后端
Victor3561 小时前
Netty(9)如何实现基于Netty的UDP客户端和服务器?
后端
在坚持一下我可没意见1 小时前
Spring 开发小白学习过程中常用通用配置文件,即拿即用!(持续更新中)
java·数据库·后端·学习·spring·tomcat·mybatis
一 乐1 小时前
心理健康管理|基于springboot + vue心理健康管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
白宇横流学长1 小时前
基于SpringBoot实现的食尚生活外卖配送管理系统设计与实现【源码+文档】
spring boot·后端·生活