code: func (h *MultiHandler) Handle(w http.ResponseWriter, r *http.Request) error {
  	req := new(info.Req)
  	body, err := ioutil.ReadAll(r.Body)
  	if err != nil {
  		log.Warningf("failed to read request body: %v", err)
  		return errors.NewBadRequest(err)
  	}
  	r.Body.Close()
  
  	err = json.Unmarshal(body, req)
  	if err != nil {
  		log.Warningf("failed to unmarshal request: %v", err)
  		return errors.NewBadRequest(err)
  	}
  
  	log.Debug("checking label")
  	if req.Label == "" {
  		req.Label = h.defaultLabel
  	}
  
  	if _, ok := h.signers[req.Label]; !ok {
  		log.Warningf("request for invalid endpoint")
  		return errors.NewBadRequestString("bad label")
  	}
  
  	log.Debug("getting info")
  	resp, err := h.signers[req.Label].Info(*req)
  	if err != nil {
  		log.Infof("error getting certificate: %v", err)
  		return err
  	}
  
  	response := api.NewSuccessResponse(resp)
  	w.Header().Set("Content-Type", "application/json")
  	enc := json.NewEncoder(w)
  	return enc.Encode(response)
  }
docs: // Handle accepts client information requests, and uses the label to
  // look up the signer whose public certificate should be retrieved. If
  // the label is empty, the default label is used.