main.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package main
  2. import (
  3. "flag"
  4. "log"
  5. "net/http"
  6. "zero/core/conf"
  7. "zero/core/logx"
  8. "zero/core/service"
  9. "zero/example/tracing/remote/portal"
  10. "zero/rest"
  11. "zero/rest/httpx"
  12. "zero/rpcx"
  13. )
  14. var (
  15. configFile = flag.String("f", "config.json", "the config file")
  16. client *rpcx.RpcClient
  17. )
  18. func handle(w http.ResponseWriter, r *http.Request) {
  19. conn, ok := client.Next()
  20. if !ok {
  21. log.Fatal("no server")
  22. }
  23. greet := portal.NewPortalClient(conn)
  24. resp, err := greet.Portal(r.Context(), &portal.PortalRequest{
  25. Name: "kevin",
  26. })
  27. if err != nil {
  28. httpx.WriteJson(w, http.StatusInternalServerError, http.StatusText(http.StatusInternalServerError))
  29. } else {
  30. httpx.OkJson(w, resp.Response)
  31. }
  32. }
  33. func main() {
  34. flag.Parse()
  35. var c rpcx.RpcClientConf
  36. conf.MustLoad(*configFile, &c)
  37. client = rpcx.MustNewClient(c)
  38. engine := rest.MustNewServer(rest.RestConf{
  39. ServiceConf: service.ServiceConf{
  40. Log: logx.LogConf{
  41. Mode: "console",
  42. },
  43. },
  44. Port: 3333,
  45. })
  46. defer engine.Stop()
  47. engine.AddRoute(rest.Route{
  48. Method: http.MethodGet,
  49. Path: "/",
  50. Handler: handle,
  51. })
  52. engine.Start()
  53. }