-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
54 lines (44 loc) · 1018 Bytes
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package main
import (
"log"
"github.com/goapt/gee"
gerrors "github.com/goapt/gee/errors"
"github.com/goapt/gee/example/proto/demo/v1"
"github.com/goapt/gee/example/service"
)
func main() {
router := gee.New()
gee.ErrorHandler = func(c *gee.Context, err error) error {
err2 := gerrors.FromError(err)
c.Status(int(err2.GetCode()))
c.Abort()
return c.JSON(gee.H{
"code": err2.GetReason(),
"msg": err2.GetMessage(),
})
}
router.Use(func(c *gee.Context) error {
c.Response.Before(func(w *gee.Response) {
if w.Body() != nil {
c.Response.Header().Set("x-body-sign", "before")
}
})
c.Next()
return nil
})
// register proto service
demo.RegisterBlogServiceHTTPServer(router, &service.Blog{})
// custom handler
router.GET("/test", func(c *gee.Context) error {
if c.Query("a") == "2" {
return demo.ErrorAccessForbidden("No access")
}
return c.JSON(gee.H{
"message": "Hello World!",
})
})
err := router.Run(":9999")
if err != nil {
log.Fatal(err)
}
}