Nestjs

API REST com NestJS, Prisma, PostgreSQL e Swagger

Criando uma API REST com NestJS, Prisma, PostgreSQL e Swagger

Neste guia, vamos criar uma API RESTful com TypeScript usando o framework NestJS, um banco de dados PostgreSQL através do Prisma, e documentar a API com o Swagger.

Tópico 1: Configuração Inicial

1.1 Instalação de Dependências

Comece instalando as dependências necessárias em seu projeto:

npm install --save @nestjs/core @nestjs/common @nestjs/microservices @nestjs/swagger @nestjs/testing
npm install --save @nestjs/typeorm pg typeorm
npm install --save prisma @prisma/client

1.2 Configuração do Banco de Dados

Configure o banco de dados PostgreSQL no arquivo ormconfig.json:

{
  "type": "postgres",
  "host": "localhost",
  "port": 5432,
  "username": "seu-usuario",
  "password": "sua-senha",
  "database": "sua-base-de-dados",
  "entities": ["dist/**/*.entity{.ts,.js}"],
  "synchronize": true
}

1.3 Configuração do Prisma

Configure o Prisma para gerenciar seu banco de dados PostgreSQL:

npx prisma init

Tópico 2: Criando Endpoints

2.1 Criando Controladores

Crie controladores para definir endpoints e lógica de roteamento.

// user.controller.ts
import { Controller, Get } from '@nestjs/common';

@Controller('users')
export class UserController {
  @Get()
  findAll(): string[] {
    return ['user1', 'user2'];
  }
}

2.2 Definindo Rotas

Configure as rotas no módulo da aplicação:

// app.module.ts
import { Module } from '@nestjs/common';
import { UserController } from './user.controller';

@Module({
  controllers: [UserController],
})
export class AppModule {}

Tópico 3: Documentação com Swagger

3.1 Configuração do Swagger

Configure o Swagger para documentar automaticamente a API:

// main.ts
import { NestFactory } from '@nestjs/core';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  const options = new DocumentBuilder()
    .setTitle('API Documentation')
    .setDescription('API endpoints documentation')
    .setVersion('1.0')
    .addTag('users')
    .build();

  const document = SwaggerModule.createDocument(app, options);
  SwaggerModule.setup('api', app, document);

  await app.listen(3000);
}
bootstrap();

Tópico 4: Práticas Recomendadas

4.1 Práticas Recomendadas

Siga as práticas recomendadas do NestJS e do Prisma para criar uma API robusta e eficiente.

Tópico 5: Conclusão

5.1 Aprofundando-se

Este guia fornece um ponto de partida para criar uma API RESTful com NestJS, Prisma, PostgreSQL e Swagger. Explore a documentação oficial dessas ferramentas e aprofunde-se em áreas específicas de interesse.