Skip to content
go web framework
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore
LICENSE
README.md
console_logger.go
context.go
default.go
file_logger.go
go.mod
go.sum
group_logger.go
logger.go
logo.png
response_writer.go
router.go
slimgo.go
slimgo_test.go
tree.go
utils.go

README.md

SlimGo Web Components

slimgo logo

又一个 go web 框架,wheel。

起步

安装

go get github.com/gitwillsky/slimgo

使用

package main

import (
	"fmt"
	"net/http"

	"github.com/gitwillsky/slimgo"
)

func main() {
	s := slimgo.New()

	// 全局过滤器 global filter
	// 全局过滤器在route之前执行
    s.AddServerFilter(func(ctx *server.Context) (interface{}, error) {
        now := time.Now()
		r, e := ctx.Next()

		// 这里可以定义router handler的结果处理,比如自定义json解析逻辑, 模板渲染逻辑,自定义错误处理等

		// ctx.getRegURLPath() 方法获得注册路由时的URL原始字符串,global filter 由系统定义为 "/*"
        log.Debugf("Handler %s in %f seconds", ctx.GetRegURLPath(), time.Since(now).Seconds())
        return r, e
    })

	// 注册单个handler
	s.GET("/hello", func(ctx *server.Context) (interface{}, error) {
		return "hello world", nil
	})

	//  根(组)路由支持
	s.Root("/system", func(ctx *server.Context) (interface{}, error){
		log.Infof("进入根路由")
		// 这里适合进行路由权限校验等逻辑
		// 这里如果返回结果或者错误,那么下面的handler将不会执行
		return nil, nil
	}).
		GET("/files/*filepath", system.StaticFileHandler).

		POST("/token", system.TokenHandler).

		// 也可以单独为后面的handler做其他的权限校验
		// 这里如果不调用ClearFilters() 那么根上定义的filter也将应用到后面的handler
		ClearFilters().
		AddFilter(filter.AuthFilter).

		POST("/files", system.UploadFileHandler).

		GET("/my", system.GetMyInfoHandler).

		PATCH("/my", system.PatchMyInfoHandler).

		PUT("/mypass", system.UpdatePasswordHandler)

    // 启动web服务
    if err = s.Start(":8080"); err != nil {
        log.Errorf("start web server failed, %s", err.Error())
    }
}

参考

  1. beego (github.com/astaxie/beego)
  2. http-router(github.com/julienschmidt/httprouter)

联系

Author Email: hdu_willsky@foxmail.com

You can’t perform that action at this time.