github.com/micro/go-micro/examples@v0.0.0-20210105173217-bf4ab679e18b/greeter/web/web.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"net/http"
     7  
     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  	"context"
    13  )
    14  
    15  func main() {
    16  	service := web.NewService(
    17  		web.Name("go.micro.web.greeter"),
    18  	)
    19  
    20  	service.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    21  		if r.Method == "POST" {
    22  			r.ParseForm()
    23  
    24  			name := r.Form.Get("name")
    25  			if len(name) == 0 {
    26  				name = "World"
    27  			}
    28  
    29  			cl := hello.NewSayService("go.micro.srv.greeter", client.DefaultClient)
    30  			rsp, err := cl.Hello(context.Background(), &hello.Request{
    31  				Name: name,
    32  			})
    33  
    34  			if err != nil {
    35  				http.Error(w, err.Error(), 500)
    36  				return
    37  			}
    38  
    39  			w.Write([]byte(`<html><body><h1>` + rsp.Msg + `</h1></body></html>`))
    40  			return
    41  		}
    42  
    43  		fmt.Fprint(w, `<html><body><h1>Enter Name<h1><form method=post><input name=name type=text /></form></body></html>`)
    44  	})
    45  
    46  	if err := service.Init(); err != nil {
    47  		log.Fatal(err)
    48  	}
    49  
    50  	if err := service.Run(); err != nil {
    51  		log.Fatal(err)
    52  	}
    53  }