Opinião de como customizar mensagem do JOI

474 views
Skip to first unread message

Fernando Cagale

unread,
Jun 26, 2015, 1:32:55 PM6/26/15
to nod...@googlegroups.com
Boa tarde!

Tenho uma API utilizando HAPI e JOI, um colega está consumindo a API com angular, só que ele comentou que as mensagens geradas pelo JOI, ficam meio difíceis de serem tratada no front. Ele comentou senão teria como customizar as mensagens geradas, pesquisei e vi que existe o uma forma de customizar as mensagens através do “failAction”. Ai pesquisei encontrei um artigo bem interessante, que faz um de para de acordo com a mensagem gerada pelo JOI, caso alguém tenha interesse e quiser dar uma olhada segue o link. https://calendee.com/2013/12/08/custom-validation-output-in-hapi-js/


Ai fiquei com dúvida, a mensagem final que vai ser exibida para o usuário é responsabilidade da API, ou neste caso o front que trataria essa situação, ou eu poderia apenas melhorar a mensagem para identificar qual é o problema ocorrido?


Outra “solução” não muito elegante, seria utilizar o label(“mensagem final”) do JOI, e formatar a mensagem no failAction, que pegaria essa mensagem colocaria entre um delimitador ou algo do tipo.


Alguém poderia dar uma sugestão?


Valeu.

Alan Hoffmeister

unread,
Jun 26, 2015, 2:09:29 PM6/26/15
to nod...@googlegroups.com
Normalmente eu utilizo a seguinte lógica: quando um erro aparece em um campo eu devolvo uma mensagem genérica para o usuário. Por exemplo: Se o campo "nome" falhou, eu apresento uma mensagem "Por favor insira um nome com no mínimo 10 letras e no máximo 40", mesmo sem saber se a validação que falhou foi a de caracteres mínimo ou máximos.

Mesmo assim alguns campos possuem muitas validações e uma mensagem genérica ficaria bem confusa, para isso recomendo utilizar o que foi citado no artigo, mas ainda acho que poderia existir uma forma bem mais simples de retornar o nome dos testes que falharam.

Nunca utilize uma mensagem de erro vinda da API para mostrar para o usuário, o propósido desta mensagem não é esta e uma API RESTfull não serve para isso :-)

--
Você recebeu essa mensagem porque está inscrito no grupo "Node.js Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nodebr+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Fernando Cagale

unread,
Jun 26, 2015, 3:33:57 PM6/26/15
to nod...@googlegroups.com
Alan,

Fiquei com uma dúvida no seu comentário, a mensagem genérica que você mencionou é no front ou sua API que devolve assim "Por favor insira um nome com no mínimo 10 letras e no máximo 40"?

Obrigado pelas observações!

Rodolfo Pereira

unread,
Jun 29, 2015, 9:06:39 PM6/29/15
to nod...@googlegroups.com

Fernando, eu estou utilizando o joi em um projeto e acabo retornando uma lista de erros baseada no atributo "details" do joi.


Agora, sobre a responsabilidade acho que fica para o front-end. Os erros do joi são mais para o desenvolvedor do que para o usuário final. Tem até uma issue aqui https://github.com/hapijs/joi/issues/546 que eles discutem sobre isso.


Abs!

Reply all
Reply to author
Forward
0 new messages