code: func (h *HTTPBin) ETag(w http.ResponseWriter, r *http.Request) {
  	parts := strings.Split(r.URL.Path, "/")
  	if len(parts) != 3 {
  		http.Error(w, "Not found", http.StatusNotFound)
  		return
  	}
  
  	etag := parts[2]
  	w.Header().Set("ETag", fmt.Sprintf(`"%s"`, etag))
  
  	// TODO: This mostly duplicates the work of Get() above, should this be
  	// pulled into a little helper?
  	resp := &getResponse{
  		Args:    r.URL.Query(),
  		Headers: getRequestHeaders(r),
  		Origin:  getOrigin(r),
  		URL:     getURL(r).String(),
  	}
  	body, _ := json.Marshal(resp)
  
  	// Let http.ServeContent deal with If-None-Match and If-Match headers:
  	// https://golang.org/pkg/net/http/#ServeContent
  	http.ServeContent(w, r, "response.json", time.Now(), bytes.NewReader(body))
  }
docs: // ETag assumes the resource has the given etag and response to If-None-Match
  // and If-Match headers appropriately.