vamos meter a mão na massa?
Primeiro vou criar um repositório no github para o Servidor NestJS
/
Eu não sei porquê , mas sempre tendo ou não tendo o projeto em minha máquina eu uso essas opções:
Eu vou criar um novo projeto em minha máquina usando o nome dado ao repositório usando nest new nestjs-api-rest
$ nest new nestjs-api-rest ⚡ We will scaffold your app in a few seconds.. CREATE nestjs-api-rest/.eslintrc.js (666 bytes) CREATE nestjs-api-rest/.prettierrc (51 bytes) CREATE nestjs-api-rest/README.md (3339 bytes) CREATE nestjs-api-rest/nest-cli.json (64 bytes) CREATE nestjs-api-rest/package.json (1967 bytes) CREATE nestjs-api-rest/tsconfig.build.json (97 bytes) CREATE nestjs-api-rest/tsconfig.json (339 bytes) CREATE nestjs-api-rest/src/app.controller.spec.ts (617 bytes) CREATE nestjs-api-rest/src/app.controller.ts (274 bytes) CREATE nestjs-api-rest/src/app.module.ts (249 bytes) CREATE nestjs-api-rest/src/app.service.ts (142 bytes) CREATE nestjs-api-rest/src/main.ts (208 bytes) CREATE nestjs-api-rest/test/app.e2e-spec.ts (630 bytes) CREATE nestjs-api-rest/test/jest-e2e.json (183 bytes) ? Which package manager would you ❤️ to use? npm ✔ Installation in progress... ☕ 🚀 Successfully created project nestjs-api-rest 👉 Get started with the following commands: $ cd nestjs-api-rest $ npm run start Thanks for installing Nest 🙏 Please consider donating to our open collective to help us maintain this package. 🍷 Donate: https://opencollective.com/nest
A ideia aqui não é falar de git, mas depois de entrar no diretório iniciar o git, adicionar e commitar todo o conteúdo, eu executo os comandos sugeridos que citei que sempre uso.
tá lá: https://github.com/jacksonbicalho/nestjs-api-rest
Então agora vamos lá, vamos partir para colocar o NestJs para funcionar recebendo e respondendo a chamadas HTTP usando o modelo REST e autenticando e gerando usuários usando JWT
Cheguei onde preciso aprender:
Eu não sei qual a melhor abordagem me referindo a modularizar o serviço ou usar os próprios app.* como o próprio serviço, mas vendo pelo meu lado cauteloso, vou começar criando um diretório chamado apps e um users. acho que assim eu garanto de forma mais ágil uma implementação de versionamento da api, algo como POST /v1/login, /v2/login, /v[n]/login…
OPA! descobri que o @nestjs/cli cria pra mim um módulo com a estrutura básica.
Dentro do diretório vou testar se a aplicação está rodando e gerar um módulo chamado user
$ npm run start > nestjs-api-rest@0.0.1 start seu_caminho/nestjs-api-rest > nest start [Nest] 74682 - 14/01/2021 19:43:20 [NestFactory] Starting Nest application... [Nest] 74682 - 14/01/2021 19:43:20 [InstanceLoader] AppModule dependencies initialized +30ms [Nest] 74682 - 14/01/2021 19:43:20 [RoutesResolver] AppController {}: +5ms [Nest] 74682 - 14/01/2021 19:43:20 [RouterExplorer] Mapped {, GET} route +2ms [Nest] 74682 - 14/01/2021 19:43:20 [NestApplication] Nest application successfully started +2ms ^C ~/dev/nestjs-api-rest (working) $
Depois de gerar o módulo, principalmente porquê não sei bem o que vai acontecer, já commitei e coloquei no master (claro no mundo real estaríamos empurrando essas alterações para outro branch)
Vamos ver agora como fazer esse módulo funcionar
O legal de gerar o módulo com o comando do nest generate module user, é que ele já registra o módulo em nossa aplicação pra você
Mas a única coisa que o comando fez por nós, foi gerar o módulo, precisamos de um controller que responda às requisições que pensamos.
Então vamos de:
$ nest generate controller user CREATE src/user/user.controller.spec.ts (478 bytes) CREATE src/user/user.controller.ts (97 bytes)
$ nest generate s user CREATE src/user/user.service.spec.ts (446 bytes) CREATE src/user/user.service.ts (88 bytes) UPDATE src/user/user.module.ts (240 bytes)
Aqui ficou assim:
Agora vou fazer esse módulo responder as minhas solicitações via REST, apenas isso.