1 Star 1 Fork 0

kade/library

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
restful.go 2.05 KB
一键复制 编辑 原始数据 按行查看 历史
kade 提交于 2024-03-21 23:09 . 补充ioc server run
package http
import (
"net/http"
"gitee.com/go-kade/library/ioc"
"gitee.com/go-kade/library/ioc/config/application"
"gitee.com/go-kade/library/ioc/config/trace"
"github.com/emicklei/go-restful/v3"
"go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful"
)
type GoRestfulRouterBuilder struct {
*RouterBuilderHooks
}
func NewGoRestfulRouterBuilder() *GoRestfulRouterBuilder {
return &GoRestfulRouterBuilder{
RouterBuilderHooks: NewRouterBuilderHooks(),
}
}
func (b *GoRestfulRouterBuilder) Build() (http.Handler, error) {
//1. 是一个RESTful服务的容器,它用于注册和管理RESTful API的路由和处理函数。
r := restful.DefaultContainer
//这行代码设置了默认的响应内容类型为JSON
//这意味着当客户端向服务器发出请求时,如果未指定特定的Accept头,服务器将以JSON格式作为默认响应内容类型返回数据。
restful.DefaultResponseContentType(restful.MIME_JSON)
//这行代码设置了默认的请求内容类型为JSON
//如果客户端发送的请求未指定特定的Content-Type头,服务器将期望请求体以JSON格式进行编码。
restful.DefaultRequestContentType(restful.MIME_JSON)
// trace中间件
if trace.Get().Enable && Get().EnableTrace {
//otelrestful.OTelFilter 函数或方法。这个函数可能接受应用程序名称作为参数,并返回一个过滤器,用于处理HTTP请求。
filter := otelrestful.OTelFilter(application.Get().AppName)
//这行代码将上一步创建的过滤器应用到路由器(或者说框架的路由器 r)中,以便对请求进行处理。这可能是一个将 OpenTelemetry 集成到 RESTful 服务中的步骤,通过这个过滤器可以将跟踪信息添加到处理的请求中。
r.Filter(filter)
}
// 开启Debug
if Get().Debug {
restful.EnableTracing(true)
}
// 装载Ioc路由之前
for _, fn := range b.Before {
fn(r)
}
// 装置子服务路由1
ioc.LoadGoRestfulApi(Get().HTTPPrefix(), r)
// 装载Ioc路由之后
for _, fn := range b.After {
fn(r)
}
return nil, nil
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/go-kade/library.git
git@gitee.com:go-kade/library.git
go-kade
library
library
v1.2.2

搜索帮助