HTTP
用途:处理基于HTTP协议的请求和响应。
工作原理:监听指定的HTTP端口,并根据接收到的请求执行相应的操作,然后返回相应的HTTP响应。
示例应用场景:Web应用程序、API服务等。
路由定义
HTTP的路由定义非常简单,大家可以直接参考internal/server/http.go中的NewHTTPServer方法。
在NewHTTPServer方法中,我们首先创建了一个gin.Engine对象,然后定义了路由规则,包括GET、POST、PUT、DELETE等方法。
需要注意的是在高级Layout示例中,我们为大家定义了三个路由组,noAuthRouter、noStrictAuthRouter和strictAuthRouter,他们的具体用法如下:
noAuthRouter:无需认证即可访问,用于一些无需认证的接口,例如登录、注册等。noStrictAuthRouter:无需严格认证即可访问,用于一些无需严格认证的接口,例如获取用户信息等。strictAuthRouter:需要严格认证即可访问,用于一些需要严格认证的接口,例如修改用户信息等。
三个路由组是基于不同的中间件实现的,具体中间件的实现可以参考internal/middleware目录下的代码。
依赖注入Handler
HTTP模块的依赖注入非常简单,只需要在NewHTTPServer方法中传入的用到的Handler结构即可。
go
func NewHTTPServer(
logger *log.Logger,
conf *viper.Viper,
jwt *jwt.JWT,
userHandler *handler.UserHandler,
// 更多handler
) *http.Server {
}