mirror of
				https://github.com/go-micro/go-micro.git
				synced 2025-10-30 23:27:41 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"encoding/json"
 | |
| 	"log"
 | |
| 	"strings"
 | |
| 
 | |
| 	hello "github.com/asim/go-micro/examples/v3/greeter/srv/proto/hello"
 | |
| 	"github.com/asim/go-micro/v3"
 | |
| 	"github.com/asim/go-micro/v3/errors"
 | |
| 	roundrobin "github.com/asim/go-micro/plugins/wrapper/select/roundrobin/v3"
 | |
| 	api "github.com/asim/go-micro/v3/api/proto"
 | |
| 
 | |
| 	"context"
 | |
| )
 | |
| 
 | |
| type Say struct {
 | |
| 	Client hello.SayService
 | |
| }
 | |
| 
 | |
| func (s *Say) Hello(ctx context.Context, req *api.Request, rsp *api.Response) error {
 | |
| 	log.Print("Received Say.Hello API request")
 | |
| 
 | |
| 	name, ok := req.Get["name"]
 | |
| 	if !ok || len(name.Values) == 0 {
 | |
| 		return errors.BadRequest("go.micro.api.greeter", "Name cannot be blank")
 | |
| 	}
 | |
| 
 | |
| 	response, err := s.Client.Hello(ctx, &hello.Request{
 | |
| 		Name: strings.Join(name.Values, " "),
 | |
| 	})
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 
 | |
| 	rsp.StatusCode = 200
 | |
| 	b, _ := json.Marshal(map[string]string{
 | |
| 		"message": response.Msg,
 | |
| 	})
 | |
| 	rsp.Body = string(b)
 | |
| 
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func main() {
 | |
| 	wrapper := roundrobin.NewClientWrapper()
 | |
| 
 | |
| 	service := micro.NewService(
 | |
| 		micro.Name("go.micro.api.greeter"),
 | |
| 		micro.WrapClient(wrapper),
 | |
| 	)
 | |
| 
 | |
| 	// parse command line flags
 | |
| 	service.Init()
 | |
| 
 | |
| 	service.Server().Handle(
 | |
| 		service.Server().NewHandler(
 | |
| 			&Say{Client: hello.NewSayService("go.micro.srv.greeter", service.Client())},
 | |
| 		),
 | |
| 	)
 | |
| 
 | |
| 	if err := service.Run(); err != nil {
 | |
| 		log.Fatal(err)
 | |
| 	}
 | |
| }
 |