沉默之都

沉默,造就了我们的冷酷-程序的威力
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

dotweb框架之旅 [二] - 常用对象-App(dotweb)

Posted on 2017-10-14 19:31  基点项目师  阅读(1290)  评论(0编辑  收藏  举报

dotweb属于一个Web框架,希望通过框架行为,帮助开发人员快速构建Web应用,提升开发效率,减少不必要的代码臃肿。

框架地址:https://github.com/devfeel/dotweb

dotweb包含以下几个常用对象:

  • App(dotweb) App容器,为Web请求处理提供必要的容器类功能。
  • HttpServer 用于真正处理Web请求的服务模块。
  • HttpContext 用于提供单次请求处理中请求信息与响应信息的快捷处理与唯一入口。
  • Response 用于从服务器向用户发送输出的结果。
  • Request 用于从用户那里取得信息。
  • Session 用于存储关于某个连接会话的信息,或者修改相关的设置。目前支持存储本机内存与Redis分布式。

本章开始,将对这系列对象做常用场景的介绍。

App对象,在dotweb中定义为DotWeb,在框架中,主要承担为Web请求处理提供必要的容器类功能,比如启动Web监听、配置初始化、设置工作模式、设置日志、设置缓存等,同时也承担一系列快捷功能入口。

主要属性:

属性 描述 默认值
HttpServer
App承载的WebServer对象
NewHttpServer()
Config
全局配置信息,映射dotweb.conf
config.NewConfig()
Middlewares
App级别的中间件集合
make([]Middleware, 0)
ExceptionHandler
自定义处理异常方法
DefaultHTTPErrorHandler()
NotFoundHandler
自定义404请求处理方法
DefaultNotFoundHandler()
MethodNotAllowedHandler
自定义405请求处理方法
DefaultMethodNotAllowedHandler()
Items
App级别全局内存kv存储
NewItemContext()
OfflineServer
维护WebServer
NewOfflineServer()

 

 

 

 

 

 

 

 

 

 

 

 

 

主要方法

方法 描述
Start()
 根据配置启动Web端口监听,若发生错误,返回具体error对象
ListenAndServe(addr string)
 指定host:port,根据配置启动Web端口监听
Use(m ...Middleware)
 注册中间件,所有请求共享
SetDevelopmentMode()\SetProductionMode()
 设置开发模式\生产模式
Cache()
 提供全局内存缓存入口
UseRequestLog()
 启用基础请求日志中间件
SetPProfConfig()
 设置pprof监听端口信息
SetLogger(log logger.AppLog)
 设置自定义日志插件

 

 

 

 

 

 

 

 

 

 

 

 

 

常规使用代码:

func main() {
    //初始化App
    app := dotweb.New()

    //设置dotserver日志目录
    //如果不设置,默认不启用,且默认为当前目录
    app.SetEnabledLog(true)

    //开启development模式
    app.SetDevelopmentMode()

    //设置路由
    InitRoute(app.HttpServer)

    //自定义404输出
    app.SetNotFoundHandle(func(ctx dotweb.Context) {
        ctx.Response().Write(http.StatusNotFound, []byte("is't app's not found!"))
    })

    //启动 监控服务
    app.SetPProfConfig(true, 8081)

    //全局容器
    app.Items.Set("app", "dotweb")

    // 开始服务
    port := 8080
    fmt.Println("dotweb.StartServer => " + strconv.Itoa(port))
    err := app.StartServer(port)
    fmt.Println("dotweb.StartServer error => ", err)
}

更多代码可参考 https://github.com/devfeel/dotweb-example

欢迎各位加入我们的go语言QQ群:193409346