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  }