code: func (h *Handler) handleGetFragmentNodes(w http.ResponseWriter, r *http.Request) {
  	if !validHeaderAcceptJSON(r.Header) {
  		http.Error(w, "JSON only acceptable response", http.StatusNotAcceptable)
  		return
  	}
  	q := r.URL.Query()
  	index := q.Get("index")
  
  	// Read shard parameter.
  	shard, err := strconv.ParseUint(q.Get("shard"), 10, 64)
  	if err != nil {
  		http.Error(w, "shard should be an unsigned integer", http.StatusBadRequest)
  		return
  	}
  
  	// Retrieve fragment owner nodes.
  	nodes, err := h.api.ShardNodes(r.Context(), index, shard)
  	if err != nil {
  		http.Error(w, err.Error(), http.StatusBadRequest)
  		return
  	}
  
  	// Write to response.
  	if err := json.NewEncoder(w).Encode(nodes); err != nil {
  		h.logger.Printf("json write error: %s", err)
  	}
  }
docs: // handleGetFragmentNodes handles /internal/fragment/nodes requests.