package
1.0.10
Repository: https://github.com/iconimpact/go-core.git
Documentation: pkg.go.dev

# README

Respond

Package respond provides idiomatic way for API responses.

  • respond.JSON - for success responses.
  • respond.JSONError - for fail responses.
  • respond.SetJSONErrorResponse - useful for handling errors differently, define custom response.

respond.JSONError response depends on go-core/errors pkg for HTTP status and Msg message.

Feel free to add new functions or improve the existing code.

Install

go get github.com/iconimpact/go-core/respond

Usage and Examples


// handle errors differently, define custom response.
errorRsp := func(err error) interface{} {
	var status int
	var errMsg string

	// set custom app err Message
	appErr, ok := err.(*errors.Error)
	if !ok {
		status = http.StatusInternalServerError
		errMsg = "Internal Server Error"
	} else {
		status = errors.ToHTTPStatus(appErr)
		errMsg = errors.ToHTTPResponse(appErr)
	}

	rsp := struct {
		Msg    string `json:"msg"`
		Status int    `json:"status"`
	}{
		Msg:    errMsg,
		Status: status,
	}

	return rsp
}
respond.SetJSONErrorResponse(errorRsp)

// usage in handler
func handleRoute(w http.ResponseWriter, r *http.Request) {

	data, err := loadFromDB()
	if err != nil {

	    // respond with an error
		respond.JSONError(w, logger, errors.E(err, errors.NotFound, "Data not found"))
		return // always return after responding

	}

	// respond with OK, and the data
	respond.JSON(w, logger, http.StatusOK, data)

}

# Functions

JSON serializes the given struct as JSON into the response body.
JSONError returns an HTTP response as JSON message with status code base on app err Kind, Msg from app err HTTPMessage.
SetJSONErrorResponse useful for handling errors differently, define custom response.