Answer the question
In order to leave comments, you need to log in
Will the error array be shared?
There is such a scheme:
// eBase - parent for all other entities.
var eBase *entityBase
// eAuth - manage the authorization.
var eAuth *entityAuth
// выполняется при старте сервера
func bootEntities() {
eBase = &entityBase{core.NewBaseController()}
// в eAuth хранится все, что связяано с авторизацией. Контроллеры, обращения к БД, и так далее.
eAuth = &entityAuth{entityBase: eBase}
}
// entityAuth - manage authorization.
type entityAuth struct {
*entityBase
bodyLogin *bodyAuthLogin
}
type entityBase struct {
*core.BaseController
}
//// пакет core
// NewBaseController - create BaseController.
func NewBaseController() *BaseController {
return &BaseController{Logger: Logger, EC: errorCollector.New()}
}
// BaseController - template for controller with cool features.
type BaseController struct {
// Logger - its a logger.
Logger *logger.Logger
// EC - errorCollector. Used to collect errors and send it in JSON.
EC *errorCollector.ErrorCollector
}
func (a *entityAuth) controllerLogin(response http.ResponseWriter, request *http.Request) {
// при ошибках валидации, валидатор добавляет ошибки в массив EC через что-то типа a.EC.AddError().
_ = a.validatorControllerLogin(request)
// и если есть ошибки (длинна массива ошибок больше нуля), то они отправляются пользователю
if a.EC.HasErrors() {
// при отправке ответа массив с ошибками очищается
a.Send(response, a.EC.GetErrors(), 400)
return
}
Answer the question
In order to leave comments, you need to log in
sync.Mutex in this situation is not an option at all, the performance of the whole service will be extremely low
. In your implementation, I would take out the list of errors in a separate object and make the validatorControllerLogin method return it, i. to get something like this.
func (a *entityAuth) controllerLogin(response http.ResponseWriter, request *http.Request) {
// при ошибках валидации, валидатор добавляет ошибки в массив EC через что-то типа a.EC.AddError().
errs = a.validatorControllerLogin(request)
// и если есть ошибки (длинна массива ошибок больше нуля), то они отправляются пользователю
if errs.HasErrors() {
// при отправке ответа массив с ошибками очищается
a.Send(response, errs.GetErrors(), 400)
return
}
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question