code: func (s *HTTPServer) KVSGet(resp http.ResponseWriter, req *http.Request, args *structs.KeyRequest) (interface{}, error) {
  	// Check for recurse
  	method := "KVS.Get"
  	params := req.URL.Query()
  	if _, ok := params["recurse"]; ok {
  		method = "KVS.List"
  	} else if missingKey(resp, args) {
  		return nil, nil
  	}
  
  	// Make the RPC
  	var out structs.IndexedDirEntries
  	if err := s.agent.RPC(method, &args, &out); err != nil {
  		return nil, err
  	}
  	setMeta(resp, &out.QueryMeta)
  
  	// Check if we get a not found
  	if len(out.Entries) == 0 {
  		resp.WriteHeader(http.StatusNotFound)
  		return nil, nil
  	}
  
  	// Check if we are in raw mode with a normal get, write out
  	// the raw body
  	if _, ok := params["raw"]; ok && method == "KVS.Get" {
  		body := out.Entries[0].Value
  		resp.Header().Set("Content-Length", strconv.FormatInt(int64(len(body)), 10))
  		resp.Write(body)
  		return nil, nil
  	}
  
  	return out.Entries, nil
  }
docs: // KVSGet handles a GET request