Como criar uma API com Express & Prisma

Existem diversas formas de facilitar a criação de API’s. Neste artigo, vamos desenvolver uma API com Express e Prisma.

[adrotate banner=”4″]

O Prisma é um ORM (Object-Relational Mapping) que ajuda os desenvolvedores a criar aplicações mais rapidamente e cometer menos erros com um kit de ferramentas de banco de dados opensource, como PostgreSQL e MySQL. Além disso, o Prisma também suporta as seguintes linguagens: Javascript e Typescript.

Pré-requisitos

É necessário ter o nodejs instalado em sua máquina, ou ter um ambiente de desenvolvimento com o node instalado, como o Docker.

Também é recomendo ter o Typescript instalado de forma global na sua máquina. Assim, você pode utilizar o comando “npm install -g typescript”.

Desenvolvimento do projeto

Para iniciarmos o nosso projeto de API com Express & Prisma, iremos criar um diretório chamado “tcl-lab” (ou um nome de sua preferência). Para facilitar a nossa vida, iremos abrir essa pasta diretamente no Visual Studio Code.

Com o vscode aberto, iremos abrir o terminal integrado usando as teclas “ctrl + j”. Em seguida, iremos inserir o seguinte comando para iniciarmos um projeto nodejs.

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 1

A flag “-y” serve para que todas as perguntas que seriam feitas durante a criação do projeto sejam puladas.

Após isso, iremos instalar algumas bibliotecas de terceiros como dependência de desenvolvimento, sendo elas: o Prisma, o Typescript e o ts-node-dev (que serve para rodar o Typescript em ambiente de desenvolvimento).

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 2

Typescript

O nosso próximo passo será inicializar o Typescript, com o comando abaixo:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 3
Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 4

Caso alguém esteja enfrentando o problema supracitado, basta abrir o terminal/powershell com permissões de administrador e instalar o Typescript globalmente através do comando.

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 5

Isso irá criar um arquivo “tsconfig.json” na raiz do projeto.

Neste momento, iremos deixar esse arquivo com as seguintes configurações:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 6

Prontinho, configuramos o Typescript!

Prisma

Em seguida, iremos rodar o comando abaixo para inicializar o Prisma, e logo iremos configurá-lo.

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 7

Isso irá criar uma pasta chama Prisma com o arquivo “schema.prisma” dentro dela. Esse é o arquivo mais importante para o Prisma funcionar.

Além disso, será criado um arquivo .env na raiz do projeto. Dessa forma, iremos acessar esse arquivo e alterar a variável de ambiente “DATABASE_URL” com os dados do nosso banco de dados.

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 8

Caso esteja usando outro banco de dados, você pode seguir as instruções da documentação do Prisma, basta clicar aqui.

Schema

Agora, iremos criar o schema. Isto é, nada mais, nada menos do que o ponto central do Prisma. É por aqui que tudo funciona (ou deixa de funcionar rs). Você pode ler mais sobre os schemas clicando aqui.

Brincadeiras à parte, vamos lá! Acessando arquivo “schema.prisma” abaixo de “datasource”, iremos criar a seguinte estrutura:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 9

OBS: para que o arquivo schema.json fique formato e bonito, é necessário instalar as seguintes extensões no vscode:

Vamos contextualizar o que o fizemos no código acima, quando usamos a seguinte sintaxe:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 10

Isso significa que estamos criando um modelo do nosso banco de dados e, ao mesmo tempo, uma entidade do nosso modelo, para que possamos usar as queries de busca do Prisma.

Sintaxes

Em nosso modelo “Student”, temos as seguintes colunas:

  • ID (que é um uuid);
  • As colunas Nome e Email (que recebem uma string);
  • Coluna de endereços (que recebe um array de endereços).

Ou seja, estamos fazendo um pequeno relacionamento de um para muitos, sendo que, um estudante pode ter vários endereços, mas um endereço só pode pertencer a um estudante.

E, por último, a sintaxe “@@map(”students”) indica que o nome da tabela no banco de dados será students.

Já no nosso modelo de Address, temos todas as colunas referentes a um endereço (com rua, número, cidade e CEP). Além disso, temos ainda a coluna student_id, que será a nossa chave estrangeira com o ID do aluno pertencente.

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 11

A sintaxe acima indica que estamos criando uma coluna que será uma chave estrangeira e sua referência.

Com nossos modelos criados, iremos mapear o nosso modelo para um esquema de banco de dados usando a CLI do Prisma, segue o comando abaixo:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 12

Após esse comando, o banco de dados será criado e as migrations serão executadas. Dessa forma, serão criadas as tabelas que inserimos em nosso schema. Caso seja necessário adicionar novas tabelas posteriormente, basta adicionar os modelos no schema e rodar o comando acima novamente.

Prisma Client

Em seguida, iremos instalar o Prisma client:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 13

Ao rodar o comando install, automaticamente será chamada a função Prisma generate. Ela é capaz de ler seu esquema Prisma e gerar uma versão do Prisma client que é adaptada aos seus modelos.

Para finalizar a configuração do Prisma, iremos criar uma pasta “src” na raiz do projeto. E dentro desta pasta, iremos criar uma pasta chamada “database” e criar um arquivo “index.ts”. Então, nesse arquivo, iremos escrever o seguinte:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 14

Assim, finalizamos a configuração do Prisma client, onde estamos exportando uma instância do nosso esquema do Prisma para que possamos criar as queries posteriormente.

Configuração do Express

Feito isso, iremos instalar o Express e configurar o nosso servidor, seguem os comandos para instalação:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 15

Com o nosso framework instalado, vamos criar um arquivo chamado “server.ts” na pasta “src”. Dessa forma, iremos adicionar o seguinte código neste arquivo:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 16

Prontinho!

Funcionalidade do server

Agora, para testarmos a funcionalidade do nosso server, iremos acessar o arquivo “package.json” e adicionar um script, segue o modelo abaixo:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 17

Esse script tem as seguintes funcionalidades:

  • transpile-only: irá apenas transcrever o código de Typescript para Javascript, sem realizar as checagens de código que são feitas normalmente;
  • respawn: irá analisar o código, e a cada salvamento (ctrl + s) ele irá reiniciar o servidor;
  • ignore-watch node_modules: irá ignorar quaisquer mudanças na pasta node_modules, assim torna a inicialização do servidor mais rápida;
  • src/server.ts: irá iniciar o servidor.

Certo, agora iremos testar se o nosso servidor está funcionando, segue o comando:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 18

O terminal deverá mostrar algo parecido com a a imagem:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 19

Criação de rotas

Com o nosso servidor rodando, vamos criar nossas rotas. Então, dentro da pasta “src”, iremos criar uma pasta chamada “routes”. Dentro dessa, pasta iremos criar um arquivo chamado “index.ts”.

Dentro desse arquivo, vamos escrever o seguinte código:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 20

No código acima, criamos um roteador, que é basicamente o nosso gerenciador e criador de rotas. Como exemplo, usamos a sintaxe:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 21

Isso significa que estamos criando uma rota com o método post. Em seguida, recuperamos os dados do corpo da requisição. Assim, com esses dados capturados, usamos o método do Prisma “findUnique” para realizar uma busca em nosso banco. Para, assim, saber se o estudante já está cadastrado na nossa aplicação.

Neste momento, verificamos se o estudante já existe. Caso positivo, retornamos um erro 400(bad request), com a mensagem “Estudante já cadastrado”. Caso negativo, seguimos com a criação do estudante com o método “create” do Prisma.

Assim, passamos os dados e, no final, retornamos o status 201 (created) sem nenhuma mensagem.

Para testarmos esse código, iremos fazer com que o nosso servidor utilize esse roteador para que as rotas estejam acessíveis. No arquivo “server.ts”, iremos deixar o arquivo assim:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 22

Insomnia

Iremos utilizar o Insomnia para realizar as requisições. Separei aqui um vídeo que mostra a criação de uma collection e uma requisição: https://www.youtube.com/watch?v=lo0lrd7v80g&feature=emb_title.

No body, iremos adicionar o seguinte:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 23

Depois, basta clicar em “SEND” e analisar o retorno.

Como nesse caso não retornamos o estudante, iremos ver os dados inseridos no banco de dados. Porém, com o próprio Prisma.

Assim, iremos abrir um novo terminal no vscode e digitar o seguinte comando:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 24
Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 25

Então, uma nova guia será aberta no seu navegador com o Prisma studio. Nessa guia, conseguimos visualizar o estudante criado:

Como criar uma API com Express & Prisma Luby Software
Como criar uma API com Express & Prisma 26

Conclusão

Finalizamos a nossa API com Express e Prisma. Com isso, podemos visualizar como o Prisma é um ORM de fácil configuração e utilização. Ou seja, ele torna todas as queries fáceis de serem escritas e de fácil integração com outros frameworks (não só com o Express, mas também com o NestJS).

Para saber mais sobre todas as funções do Prisma você pode ler a documentação do projeto clicando aqui.

Repositório do projeto criado: https://github.com/paulozy/express-prisma-api

Autor: Paulo De Abreu Santana.

[adrotate banner=”5″]

Gostou do conteúdo? Compartilhe

Últimos posts

Fique por dentro das últimas novidades do mundo da tecnologia com os conteúdos do nosso blog!

Acelere a Transformação Digital da sua Empresa

Basta preencher este formulário ou ligar para +55 11 3055 3404

Fale conosco​

Technology Intelligence

Luby - Latin America

Rua Amália de Noronha, nº 151, 3º Andar, Sala 303
Pinheiros, São Paulo – SP – Brasil
CEP: 05410-010

Luby - North America

1110 Brickell Avenue
Suite 310
Miami – FL
United States

Copyright ©2023 Luby Software LLC. All rights reserved.

Rolar para cima