func ExampleCall(w http.ResponseWriter, r *http.Request) { // decode the incoming request as json var request map[string]interface{} if err := json.NewDecoder(r.Body).Decode(&request); err != nil { http.Error(w, err.Error(), 500) return } // call the backend service exampleClient := example.NewExampleClient("go.micro.srv.template", client.DefaultClient) rsp, err := exampleClient.Call(context.TODO(), &example.Request{ Name: request["name"].(string), }) if err != nil { http.Error(w, err.Error(), 500) return } // we want to augment the response response := map[string]interface{}{ "msg": rsp.Msg, "ref": time.Now().UnixNano(), } // encode and write the response as json if err := json.NewEncoder(w).Encode(response); err != nil { http.Error(w, err.Error(), 500) return } }
// Client returns a wrapper for the ExampleClient func ExampleWrapper(service micro.Service) server.HandlerWrapper { client := example.NewExampleClient("go.micro.srv.template", service.Client()) return func(fn server.HandlerFunc) server.HandlerFunc { return func(ctx context.Context, req server.Request, rsp interface{}) error { ctx = context.WithValue(ctx, exampleKey{}, client) return fn(ctx, req, rsp) } } }