github.com/micro/go-micro/examples@v0.0.0-20210105173217-bf4ab679e18b/template/web/handler/handler.go (about) 1 package handler 2 3 import ( 4 "context" 5 "encoding/json" 6 "net/http" 7 "time" 8 9 example "github.com/micro/go-micro/examples/template/srv/proto/example" 10 "github.com/micro/go-micro/v2/client" 11 ) 12 13 func ExampleCall(w http.ResponseWriter, r *http.Request) { 14 // decode the incoming request as json 15 var request map[string]interface{} 16 if err := json.NewDecoder(r.Body).Decode(&request); err != nil { 17 http.Error(w, err.Error(), 500) 18 return 19 } 20 21 // call the backend service 22 exampleClient := example.NewExampleService("go.micro.srv.template", client.DefaultClient) 23 rsp, err := exampleClient.Call(context.TODO(), &example.Request{ 24 Name: request["name"].(string), 25 }) 26 if err != nil { 27 http.Error(w, err.Error(), 500) 28 return 29 } 30 31 // we want to augment the response 32 response := map[string]interface{}{ 33 "msg": rsp.Msg, 34 "ref": time.Now().UnixNano(), 35 } 36 37 // encode and write the response as json 38 if err := json.NewEncoder(w).Encode(response); err != nil { 39 http.Error(w, err.Error(), 500) 40 return 41 } 42 }