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  }