Skip to content

Instantly share code, notes, and snippets.

@Briofita09
Created January 20, 2023 22:19
Show Gist options
  • Save Briofita09/5e4aa8c85f857deddfe5591b66c496b5 to your computer and use it in GitHub Desktop.
Save Briofita09/5e4aa8c85f857deddfe5591b66c496b5 to your computer and use it in GitHub Desktop.

Routes and Controllers

Router e Controllers fazem parte da arquitetura em camadas do back-end. Esse padrão de arquitetura possui algumas outras camadas, mas vamos falar como criar as duas primeiras camadas do back-end:

  • Criando Routers

Quanto mais sua aplicação cresce, maior é a necessidade para uma organização. A primeira tarefa é definir as rotas que a sua aplicação vai ter e para isso você vai precisar de uma pasta chamada "routes" dentro da sua src

image

O exemplo acima possui duas pastas diferentes, uma para cada roteamento. Vamos olhar o roteamento dos usuários e ver como ele pode ser construído.

image

Na linha 1 importamos o Router diretamente do express. A Linha 2 é responsável por importar os middlewares, enquanto a linha 3 é responsável por importar os controllers e por fim a linha 5 importa os schemas de usuário. Na linha 7 é criada uma variável que vai instânciar o Router do express para que o possamos utiliza-lo. Assim, na linha 9 teremos nossa primeira rota. A rota "/sign-up" é criada utilizando o método post do Router que foi instânciado acima dentro da variável userRouter. Assim temos como primeiro parâmetro da função o exato endpoint, no caso, "/sign-up", o segundo parâmetro é uma middleware de validação (não se atentem a ela por enquanto) e o terceiro parâmetro é a função denominada createUser que está na camada controller. Por fim, exportamos userRouter na linha 21.

  • Alterando o app.js:

Antes de irmos a camada controller, vamos ver o que tem que ser modificado no arquivo onde antigamente ficavam as rotas e onde o express está instânciado:

image

Na linha 5 importamos o userRouter que criamos anteriormente e usamos o método use e passamos o userRouter como parâmetro.

  • Criando Controllers:

Seguindo o padrão dos routers, aqui temos um controller para cada model

image

Vamos falar especificamente do userController, já que estavamos falando dele no router.

image

Na camada de controller, a função createUserque chamamos no router é criada. Nela todas as regras de negócio, assim como o tratamento do body e das respostas é feito e enviado ao usuário.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment