1 main.go 启动app
package main
import (
"log"
"github.com/track/blogserver/pkg/app"
)
func main() {
// 初始化app
app := app.NewApp()
defer app.Destory()
// 启动
log.Fatal(app.Launch())
}
2 app packet 使用dotweb 框架来构建http服务器,dotweb.New()返回的dotweb对象通常我们叫做app,它负责日志、缓存、热加载、加载httpserver等等工作。它是一个容器、一个宿主,httpserver就是在它的环境里运行。HttpServer负责处理请求,管理路由、session、中间件等等功能。
初始化server之后就会初始化路由配置。
package app
import (
"github.com/devfeel/dotweb"
"github.com/track/blogserver/pkg/config"
"github.com/track/blogserver/pkg/controllers"
"github.com/track/blogserver/pkg/routers"
)
//应用服务器
type App struct {
Conf *config.BlogConfig
Server *dotweb.DotWeb
}
func NewApp() *App {
return &App{}
}
//启动服务器
func (app *App) Launch() error {
app.Conf = config.Config()
app.initServer()
app.initRouter()
return app.Server.StartServer(app.Conf.ServerPort)
}
//关闭操作
func (app *App) Destory() {
if app.Server != nil {
app.Server.Close()
}
}
//根据配置初始化服务器
func (app *App) initServer() {
app.Server = dotweb.New()
//配置Log
app.Server.SetEnabledLog(app.Conf.LogEnable)
app.Server.SetLogPath(app.Conf.LogPath)
//配置自定义error
app.initError()
//配置环境模式
if app.Conf.EnvProd {
app.Server.SetProductionMode()