github.com/micro/go-micro/examples@v0.0.0-20210105173217-bf4ab679e18b/greeter/api/beego/beego.go (about) 1 package main 2 3 import ( 4 "context" 5 "log" 6 7 "github.com/astaxie/beego" 8 bctx "github.com/astaxie/beego/context" 9 10 hello "github.com/micro/go-micro/examples/greeter/srv/proto/hello" 11 "github.com/micro/go-micro/v2/client" 12 "github.com/micro/go-micro/v2/web" 13 ) 14 15 type Say struct{} 16 17 var ( 18 cl hello.SayService 19 ) 20 21 func (s *Say) Anything(ctx *bctx.Context) { 22 log.Print("Received Say.Anything API request") 23 ctx.Output.JSON(map[string]string{ 24 "message": "Hi, this is the Greeter API", 25 }, false, true) 26 } 27 28 func (s *Say) Hello(ctx *bctx.Context) { 29 log.Print("Received Say.Hello API request") 30 31 name := ctx.Input.Param(":name") 32 33 response, err := cl.Hello(context.TODO(), &hello.Request{ 34 Name: name, 35 }) 36 37 if err != nil { 38 ctx.Output.SetStatus(500) 39 ctx.Output.JSON(err, false, true) 40 } 41 42 ctx.Output.JSON(response, false, true) 43 } 44 45 func main() { 46 // Create service 47 service := web.NewService( 48 web.Name("go.micro.api.greeter"), 49 ) 50 51 service.Init() 52 53 // Setup Greeter Server Client 54 cl = hello.NewSayService("go.micro.srv.greeter", client.DefaultClient) 55 56 // Create RESTful handler 57 say := new(Say) 58 beego.Get("/greeter", say.Anything) 59 beego.Get("/greeter/:name", say.Hello) 60 61 // Register Handler 62 service.Handle("/", beego.BeeApp.Handlers) 63 64 // Run server 65 if err := service.Run(); err != nil { 66 log.Fatal(err) 67 } 68 }