code: func (h *Handler) readURLQueryRequest(r *http.Request) (*pilosa.QueryRequest, error) {
  	q := r.URL.Query()
  
  	// Parse query string.
  	buf, err := ioutil.ReadAll(r.Body)
  	if err != nil {
  		return nil, errors.Wrap(err, "reading")
  	}
  	query := string(buf)
  
  	// Parse list of shards.
  	shards, err := parseUint64Slice(q.Get("shards"))
  	if err != nil {
  		return nil, errors.New("invalid shard argument")
  	}
  
  	return &pilosa.QueryRequest{
  		Query:           query,
  		Shards:          shards,
  		ColumnAttrs:     q.Get("columnAttrs") == "true",
  		ExcludeRowAttrs: q.Get("excludeRowAttrs") == "true",
  		ExcludeColumns:  q.Get("excludeColumns") == "true",
  	}, nil
  }
docs: // readURLQueryRequest parses query parameters from URL parameters from r.