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