code: func (s *HTTPServer) UINodeInfo(resp http.ResponseWriter, req *http.Request) (interface{}, error) {
  	// Parse arguments
  	args := structs.NodeSpecificRequest{}
  	if done := s.parse(resp, req, &args.Datacenter, &args.QueryOptions); done {
  		return nil, nil
  	}
  
  	// Verify we have some DC, or use the default
  	args.Node = strings.TrimPrefix(req.URL.Path, "/v1/internal/ui/node/")
  	if args.Node == "" {
  		resp.WriteHeader(http.StatusBadRequest)
  		fmt.Fprint(resp, "Missing node name")
  		return nil, nil
  	}
  
  	// Make the RPC request
  	var out structs.IndexedNodeDump
  	defer setMeta(resp, &out.QueryMeta)
  RPC:
  	if err := s.agent.RPC("Internal.NodeInfo", &args, &out); err != nil {
  		// Retry the request allowing stale data if no leader
  		if strings.Contains(err.Error(), structs.ErrNoLeader.Error()) && !args.AllowStale {
  			args.AllowStale = true
  			goto RPC
  		}
  		return nil, err
  	}
  
  	// Return only the first entry
  	if len(out.Dump) > 0 {
  		info := out.Dump[0]
  		if info.Services == nil {
  			info.Services = make([]*structs.NodeService, 0)
  		}
  		if info.Checks == nil {
  			info.Checks = make([]*structs.HealthCheck, 0)
  		}
  		return info, nil
  	}
  
  	resp.WriteHeader(http.StatusNotFound)
  	return nil, nil
  }
docs: // UINodeInfo is used to get info on a single node in a given datacenter. We return a
  // NodeInfo which provides overview information for the node