💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[概述] dotweb.go是dotweb的入口类,它提供了dotweb实例的创建、配置及管理。它封装了dotweb对象,并提供了异常处理、缓存配置等函数。 [索引] 常量 type Dotweb func New() func (app *DotWeb) RegisterMiddlewareFunc(name string, middleFunc MiddlewareFunc) [常量] `` const( DefaultHTTPPort //默认的端口号,值为8080 RunMode_Development = "development" RunMode_Production = "production" ) `` [type Dotweb] ~~~ type ( DotWeb struct { HttpServer *HttpServer //server对象 cache cache.Cache //cache对象 OfflineServer servers.Server Config *config.Config //config对象 Middlewares []Middleware //中间件 ExceptionHandler ExceptionHandle //异常处理 NotFoundHandler StandardHandle // NotFoundHandler 支持自定义404处理代码能力 MethodNotAllowedHandler StandardHandle // 处理未允许Method提交的请求 AppContext *core.ItemContext //请求级的上下文域 middlewareMap map[string]MiddlewareFunc middlewareMutex *sync.RWMutex } // ExceptionHandle 支持自定义异常处理代码能力 ExceptionHandle func(Context, error) // StandardHandle 标准处理函数,需传入Context参数 StandardHandle func(Context) // Handle is a function that can be registered to a route to handle HTTP // requests. Like http.HandlerFunc, but has a special parameter Context contain all request and response data. HttpHandle func(Context) error ) ~~~ [func New()] `` app := dotweb.New() `` 获取一个新的dotweb对象。 [func (app *DotWeb) RegisterMiddlewareFunc(name string, middleFunc MiddlewareFunc)] `` app := dotweb.New() app.RegisterMiddlewareFunc("jwt", jwt.Middleware(jwt.DefaultJWTConfig) `` 注册一个名为“jwt”的中间件,关于中间件请访问[middleware](https://github.com/devfeel/middleware)。 [func (app *Dotweb) GetMiddlewareFunc] ~~~ app := dotweb.New() m, e := app.GetMiddlewareFunc("jwt")//若中间件存在e为true,若不存在则为false,m为nil值。 ~~~ 根据name获取中间件函数。 [func (app *Dotweb) Cache] ~~~ app := dotweb.New() c := app.Cache() ~~~ 获取Cache缓存对象。 [func (app *Dotweb) SetCache] ~~~ app := dotweb.New() app.SetCache(cache.NewRuntimeCache())//使用本机内存缓存 ~~~ 设置缓存方式,dotweb默认提供Runtime和Redis两种方式,可以自行扩展别的方式。 [func (app *DotWeb) RunMode(] ~~~ app := dotweb.New() app.RunMode()//development ~~~ 获取dotweb运行模式,具有development以及production两种模式。前者表示开发模式,后者表示生产模式,开发模式会打印详细的异常信息。 [func (app *DotWeb) IsDevelopmentMode] ~~~ app := dotweb.New() app.IsDevelopmentMode()//true ~~~ 判断运行模式是否是开发模式,dotweb默认值是开发模式。 [func (app *DotWeb) SetDevelopmentMode] ~~~ app := dotweb.New() app.SetDevelopmentMode() ~~~ 将dotweb运行模式设置为development(开发模式),大部分情况下你不用使用此设置,因为它是默认设置。 [func (app *DotWeb) SetProductionMode] ~~~ app := dotweb.New() app.SetProductionMode() ~~~ 将dotweb运行模式设置为production(生产模式)。 [func (app *DotWeb) Use] ~~~ app := dotweb.New() m := &[5]Middleware app.Use(m) ~~~ 注册中间件。需要注意的是它接收一个可变长度参数,注意这个“可变参数”在代码中表示“...”,由于翻译问题也有叫它多变参数的,它们表示的是同一个意思。 [func (app *DotWeb) UseRequestLog] ~~~ app := dotweb.New() app.UseRequestLog() ~~~ 使用dotweb提供的Requestlog中间件。 [func (app *DotWeb) SetExceptionHandle] ~~~ func ExceptionHandler(c dotweb.Context, e error){//...} app := dotweb.New() app.SetExceptionHandle(ExceptionHandler) ~~~ 设置异常处理程序。 [func (app *DotWeb) SetNotFoundHandle] ~~~ func NotFoundHandler(c dotweb.Context){//...} app := dotweb.New() app.SetNotFoundHandle(NotFoundHandler) ~~~ 设置404处理程序。 [func (app *DotWeb) SetMethodNotAllowedHandle] ~~~ func MethodNotAllowedHandler(c dotweb.Context){//...} app := dotweb.New() app.SetMethodNotAllowedHandle(MethodNotAllowedHandler) ~~~ 设置被禁用的请求方法请求处理,比如一个请求只允许Post请求方法,如果用Get方法请求则被视为违规请求,此请求将被MethodNotAllowedHandle处理。 [func (app *DotWeb) SetPProfConfig] ~~~ app := dotweb.New() app.SetPProfConfig(true, 8050) ~~~ 设置是否启用PProf并设置端口号,默认是禁用状态。我们使用PProf服务来查询dotweb状态。 [func (app *DotWeb) SetLogger] ~~~ app := dotweb.New() app.SetEnabledLog(true)//是否启用日志 app.SetLogPath(file.GetCurrentDirectory())//设置日志目录,GetCurrentDirectory表示获取当前项目目录 app.SetLogger(logger.Logger()) ~~~ 设置日志处理对象,dotweb默认提供logger.AppLog。 [func (app *DotWeb) SetConfig] ~~~ app := dotweb.New() app.InitConfig(file.GetCurrentDirectory() + "/dotweb.json.conf", "json") ~~~ 加载dotweb配置,dotweb配置可以通过代码设置之外还可以通过配置文件加载的方式。dotweb支持xml文件和json文件加载,一个dotweb实例只能使用一种文件配置方式,详细请参考[dotweb-Config](https://github.com/devfeel/dotweb-example/tree/master/config)或是阅读dotweb源码。 [func (app *DotWeb) StartServer] ~~~ app := dotweb.New() app.StartServer(8080) ~~~ 启动dotweb服务,并设置端口号。 [func (app *DotWeb) Start] ~~~ app := dotweb.New() app.Start() ~~~ 启动dotweb服务,它和StartServer区别是:你加载config文件之后直接启动服务,只需要在config文件里设置好一切配置。如果未设定端口号,它将使用dotweb默认端口号。 [func (app *DotWeb) MustStart] ~~~ app := dotweb.New() app.MustStart() ~~~ 仍然是启动dotweb服务,它调用Start函数。与Start不同的是,如果在启动时出现了配置错误会引发Panic。 [func (app *DotWeb) ListenAndServe] ~~~ app := dotweb.New() app.ListenAndServe(8080)//8080是端口号 ~~~ 还是启动dotweb服务,不过ListenAndServer只会启动dotweb服务不会启动pprof服务。 [func (app *DotWeb) DefaultHTTPErrorHandler] [func (app *DotWeb) DefaultNotFoundHandler] [func (app *DotWeb) DefaultMethodNotAllowedHandler] 以上三个函数是dotweb提供的默认处理程序,针对SetExceptionHandle、SetNotFoundHandle、SetMethodNotAllowedHandle三个异常处理程序。 [func (app *DotWeb) Close] ~~~ app := dotweb.New() app.Close() ~~~ 立即关闭并停止dotweb服务。 [func (app *DotWeb) Shutdown] ~~~ app := dotweb.New() app.Shutdown(app.HttpServer.pool.context.Get().(HttpContext).context) ~~~ 关闭并停止dotweb服务,与Close立即停止服务不同的是,Shutdown会等待活动连接停止活动后关机。详细可查询Shutdown与Close的区别。