1. 程式人生 > >dotweb框架之旅 [二] - 常用對象-App(dotweb)

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

中間件 .com webserver 指定 color mco 路由 輸出 border

dotweb屬於一個Web框架,希望通過框架行為,幫助開發人員快速構建Web應用,提升開發效率,減少不必要的代碼臃腫。

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()
AppContext
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.AppContext.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

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