package controller import ( "encoding/json" "net/http" "github.com/rs/zerolog/log" ) func (h *Mirage) ListIdps( w http.ResponseWriter, r *http.Request, ) { h.doAPIResponse(w, "", h.cfg.IdpList) } // API调用的统一响应发报 // @msg 响应状态:成功时data不为nil则忽略,自动设置为success,否则拼接error-{msg} // @data 响应数据:key值为data的json对象 func (h *Mirage) doAPIResponse(writer http.ResponseWriter, msg string, data interface{}) { res := APIResponse{} if data != nil { res.Status = "success" res.Data = data } else { res.Status = "error-" + msg } writer.Header().Set("Content-Type", "application/json; charset=utf-8") writer.WriteHeader(http.StatusOK) err := json.NewEncoder(writer).Encode(&res) if err != nil { log.Error(). Caller(). Err(err). Msg("Failed to write response") } }