Inicialmente vamos criar nosso Microservice onde sera chamado a requisição para autenticar o usuário.
Para isso vamos usar o seguinte comando nest new app-auth, essa sera nosso que sera nosso microservice onde iremos registar e autenticar os usuários configurar nosso bootstrap no main.ts.
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { Transport } from '@nestjs/microservices';
async function bootstrap() {
const { listen } = await NestFactory.createMicroservice(AppModule, {
transport: Transport.TCP,
});
await listen(() => console.log('Auth Service Up'));
}
bootstrap();
vamos usar o TCP mas poderia estar usando kafka ou nats-server(prefiro), vamos criar nosso service onde ficará nossos métodos a ideia é seguir o conceito da arquitetura SOLID que o NestJS nos da inicialmente deixando de forma clara que podemos usar outros padrões de arquitetura dentro do projeto.
para criar nosso service usamos o comando dessa
nest g service
forma ele ira criar o service para usarmos, é interessante ressaltar que em um microservice podemos ter vários services porem não pode fugir da ideia que um microservice como o próprio nome diz é algo especialista.
Vamos criar uma interface antes de criar os métodos em nosso service, então criaremos uma pasta interfaces e dentro dela a seguinte interface.
export interface UserInterfaces {
name: string;
email: string;
password: string;
}
Nosso service ficara da seguinte forma.
import { Injectable } from '@nestjs/common';
import { UserInterfaces } from '../interfaces/user.interfaces';
@Injectable()
export class UserService {
private readonly users: UserInterfaces[] = [];
create(user: UserInterfaces) {
this.users.push(user);
}
find(email: string, password: string): UserInterfaces {
return this.users.find(
(Users) => Users.email === email && Users.password === password,
);
}
}
Vamos deixar a interação com array, futuramente iremos trocar por uma interação com o mongodb, dessa forma também podemos entender que independente do banco de dados utilizado o impacto na aplicação é minimizado.
Vamos agora ao nosso controller, onde a magica tem que acontecer.
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
import { EventPattern } from '@nestjs/microservices';
import { UserInterfaces } from './interfaces/user.interfaces';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@EventPattern('register')
register(user: UserInterfaces) {
console.log('Users', user);
}
@EventPattern('login')
login(email: string, password: string) {
console.log('Email', email);
}
}
Agora temos nosso microservice de auth estruturado na parte 2 vamos criar a interação do cliente consumindo esses métodos e vamos validar se esta tudo okay.
Top comments (0)