[DUVIDA] Como fazer validações no Back-end?
Toda vez que vou criar uma aplicação back-end, mais especificamente API REST, eu caio em um "dilema" que é a validação na hora de criar de um usuario por exemplo.
Quando estou criando as validações (se o usuario existe, espacamento e diversas outras coisas) eu caio num mar de if's e eu acho muito feio, creio que não seria o ideal.
Já tentei criar um arquivo separado, uma função só pra isso, mas é só um "disfarce" pois os if's continuarão lá.
Como resolver isso?
Acho que vai depender da tecnologia que você utiliza, mas deixando um exemplo de como normalmente organizo em elixir:
- router encaminha request para o controller
- no controller, chamo a função que vai fazer a validação de changeset. Aqui é validado os parametros recebidos na request, podendo validar valores (por exemplo, se o email está no formato esperado, se a idade é maior que x)
- com sucesso na etapa anterior, o controller chama o domínio, que daí vai poder fazer validações mais específicas de regras de negócio, por exemplo.
Depende da tecnologia que você está usando e a forma que você quer fazer essas validações.
Eu estou fazendo um projeto ASP Net, nele eu faço as verificações dos dados de entrada do usuário usando filtros, nos services faço verificações de como será devolvido os dados para o controller e verificações no banco de dados.
Isso é bem relativo, por exemplo, se eu fosse fazer em java já iria mudar bastante coisa, dê uma estudada de acorodo com o que você estiver utilizando pra ver qual seria a melhor solução pra você.
Não sei qual tecnologia você usa no backend, mas no mundo node há ferramentas como o Zod que a partir de um determinado schema você vai eliminar diversos desses ninhos de IFs que você diz sofrer tanto.
Outras validações das regras de negócio podem ser feitas de diversas formas como nos próprios setters, nos controllers, use cases, middlewares... não há apenas um jeito certo de se fazer isso.
Cara assim, você não está mais nos anos 90 onde se colocava tudo em um arquivo, se você tem dúvidas sobre como fazer um crud no back-end, da uma pesquisada sobre, principalmente conceitos básicos como MVC e afins, geralmente a validação é feita através do proprio modelo, utilizando principios de solid(não existe somente esta forma), podemos também fazer a validação utilizando DTOs(mas vai de cada um, eu não acho legal fazer no DTO). Por exemplo, uma validação de CPF, eu geralmete coloco na regra de negócio na camada de transição do DTO para um service onde eu recebo os dados e os valido, assim podendo tranformar em meu objeto real e manipular ele a partir da camada de serviço. As validações dependem muito do contexto que você está querendo, em maioria uma lógica é aplicada, mas também um simples if...else resolve. Mas um sistema é construido em camadas, e geralmente validações são feitas em N camadas diferentes, por exemplo em um MVC, antes de enviar os dados a Model para instaciar o objeto, as validações são feitas dentro do proprio endpoint registrado no controller, não existe um jeito coringa, você pode criar validações no proprio modelo para quando ele for instanciado, mas também pode fazer a validação na controller ao receber a requisição. Tudo depende da regra de negócio, outro ponto, existem outras formas de validar algo, mas em sua grande maioria vão ser varios if´s pois o if é uma sentença de controle, e isso é base de todas as linguagens de programação. o que você pode usar são função anônimas para organizar o código, ou colocar uma camada de testes, mas ainda sim vai ser um mar de if...else.