代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。