Skip to content

Commit

Permalink
Perf: perf router
Browse files Browse the repository at this point in the history
  • Loading branch information
yangfei committed Nov 9, 2018
1 parent e3ef58a commit 934ede0
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 48 deletions.
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,13 +90,13 @@ How to use:
```golang
r := router.New()
r.GET("/", decorates.Handler(controllers.Config).ContentJSON())
r.GET("/", controllers.Config().ContentJSON())
r.GET("/demo1", decorates.Handler(controllers.Config).ContentJSON().Auth())
r.GET("/demo1", controllers.Config().ContentJSON().Auth())
r.GET("/demo2", decorates.Handler(controllers.Config).ContentJSON().Verify())
r.GET("/demo2", controllers.Config().ContentJSON().Verify())
r.GET("/demo3", decorates.Handler(controllers.Config).ContentJSON().Auth().Verify())
r.GET("/demo3", controllers.Config().ContentJSON().Auth().Verify())
```
* token generate
Expand Down Expand Up @@ -136,13 +136,13 @@ How to use:
r := router.New()
r.GET("/", decorates.Handler(controllers.Config).ContentJSON())
r.GET("/", controllers.Config().ContentJSON())
r.GET("/demo1", decorates.Handler(controllers.Config).ContentJSON().Auth())
r.GET("/demo1", controllers.Config().ContentJSON().Auth())
r.GET("/demo2", decorates.Handler(controllers.Config).ContentJSON().Verify())
r.GET("/demo2", controllers.Config().ContentJSON().Verify())
r.GET("/demo3", decorates.Handler(controllers.Config).ContentJSON().Auth().Verify())
r.GET("/demo3", controllers.Config().ContentJSON().Auth().Verify())
log.Fatal(http.ListenAndServe(settings.Listen, r))
Expand Down
39 changes: 17 additions & 22 deletions README_ZH.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,13 +93,13 @@
```golang
r := router.New()
r.GET("/", decorates.Handler(controllers.Config).ContentJSON())
r.GET("/", controllers.Config().ContentJSON())
r.GET("/demo1", decorates.Handler(controllers.Config).ContentJSON().Auth())
r.GET("/demo1", controllers.Config().ContentJSON().Auth())
r.GET("/demo2", decorates.Handler(controllers.Config).ContentJSON().Verify())
r.GET("/demo2", controllers.Config().ContentJSON().Verify())
r.GET("/demo3", decorates.Handler(controllers.Config).ContentJSON().Auth().Verify())
r.GET("/demo3", controllers.Config().ContentJSON().Auth().Verify())
```
* token生成
```golang
Expand Down Expand Up @@ -138,13 +138,13 @@
r := router.New()
r.GET("/", decorates.Handler(controllers.Config).ContentJSON())
r.GET("/", controllers.Config().ContentJSON())
r.GET("/demo1", decorates.Handler(controllers.Config).ContentJSON().Auth())
r.GET("/demo1", controllers.Config().ContentJSON().Auth())
r.GET("/demo2", decorates.Handler(controllers.Config).ContentJSON().Verify())
r.GET("/demo2", controllers.Config().ContentJSON().Verify())
r.GET("/demo3", decorates.Handler(controllers.Config).ContentJSON().Auth().Verify())
r.GET("/demo3", controllers.Config().ContentJSON().Auth().Verify())
log.Fatal(http.ListenAndServe(settings.Listen, r))
Expand All @@ -157,14 +157,7 @@
* 这是一个统一的参数校验,主要是针对SQL注入,有了它,或许就不用一个一个参数做校验了。
* 使用方式
```golang
router.Route{
"authDemo",
"GET",
"/demo1",
Handler(controllers.Config).
Verify(),
contenttype.JSON,
},//需要验证用户信息
r.GET("/", controllers.Config().ContentJSON().Verify())//需要验证用户信息
```
* 令牌
```golang
Expand Down Expand Up @@ -200,13 +193,15 @@
```
* 错误处理以及http状态管理
```golang
func XxxxController(w http.ResponseWriter, r *http.Request) *models.APPError {
xxx,err := someOperation()
if err != nil{
return &models.APPError {err, Message, Code, Status}
func XxxxController() decorates.Handler{
return func (w http.ResponseWriter, r *http.Request) *models.APPError {
xxx,err := someOperation()
if err != nil{
return &models.APPError {err, Message, Code, Status}
}
...
return nil
}
...
return nil
}
```
Expand Down
12 changes: 8 additions & 4 deletions controllers/adminController.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,15 @@ package controllers
import (
"net/http"

"github.com/yang-f/beauty/decorates"
"github.com/yang-f/beauty/models"
)

func Config(w http.ResponseWriter, r *http.Request) *models.APPError {
b := []byte(`{"description":"this is json"}`)
w.Write(b)
return nil
// Config ...
func Config() decorates.Handler {
return func(w http.ResponseWriter, r *http.Request) *models.APPError {
b := []byte(`{"description":"this is json"}`)
w.Write(b)
return nil
}
}
17 changes: 8 additions & 9 deletions controllers/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import (
"testing"

"github.com/yang-f/beauty/db"
"github.com/yang-f/beauty/decorates"
"github.com/yang-f/beauty/router"
"github.com/yang-f/beauty/settings"
)
Expand Down Expand Up @@ -65,10 +64,10 @@ func TestConfig(t *testing.T) {
}

r := router.New()
r.GET("/", decorates.Handler(Config))
r.GET("/demo1", decorates.Handler(Config).Auth())
r.GET("/demo2", decorates.Handler(Config).Verify())
r.GET("/demo3", decorates.Handler(Config).Auth().Verify())
r.GET("/", Config())
r.GET("/demo1", Config().Auth())
r.GET("/demo2", Config().Verify())
r.GET("/demo3", Config().Auth().Verify())
for _, test := range tests {
req, err := http.NewRequest(test.Method, test.Pattern, nil)
if err != nil {
Expand All @@ -90,10 +89,10 @@ func TestConfig(t *testing.T) {

func Benchmark_config(b *testing.B) {
r := router.New()
r.GET("/", decorates.Handler(Config))
r.GET("/demo1", decorates.Handler(Config).Auth())
r.GET("/demo2", decorates.Handler(Config).Verify())
r.GET("/demo3", decorates.Handler(Config).Auth().Verify())
r.GET("/", Config())
r.GET("/demo1", Config().Auth())
r.GET("/demo2", Config().Verify())
r.GET("/demo3", Config().Auth().Verify())
for i := 0; i < b.N; i++ {
req, err := http.NewRequest("GET", "/", nil)
if err != nil {
Expand Down
Binary file modified etc/demo.zip
Binary file not shown.
9 changes: 4 additions & 5 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import (
"os"

"github.com/yang-f/beauty/controllers"
"github.com/yang-f/beauty/decorates"

"github.com/yang-f/beauty/router"
"github.com/yang-f/beauty/settings"
Expand Down Expand Up @@ -67,10 +66,10 @@ func main() {
case demo.FullCommand():
log.Printf("Start server on port %s", settings.Listen)
r := router.New()
r.GET("/", decorates.Handler(controllers.Config).ContentJSON())
r.GET("/demo1", decorates.Handler(controllers.Config).ContentJSON().Auth())
r.GET("/demo2", decorates.Handler(controllers.Config).ContentJSON().Verify())
r.GET("/demo3", decorates.Handler(controllers.Config).ContentJSON().Auth().Verify())
r.GET("/", controllers.Config().ContentJSON())
r.GET("/demo1", controllers.Config().ContentJSON().Auth())
r.GET("/demo2", controllers.Config().ContentJSON().Verify())
r.GET("/demo3", controllers.Config().ContentJSON().Auth().Verify())
log.Fatal(http.ListenAndServe(settings.Listen, r))
}
}

0 comments on commit 934ede0

Please sign in to comment.