Alura > Cursos de Programação > Cursos de Node.JS > Conteúdos de Node.JS > Primeiras aulas do curso Nest.js: criando uma API Restful

Nest.js: criando uma API Restful

Conhecendo o Nest - Apresentação

Boas-vindas ao curso de NestJS! Meu nome é Wanderson Macedo.

Wanderson é negro, tem cabelos pretos curtos. Usa bigode e cavanhaque e está com uma camisa escura. Está em um ambiente com iluminação azul suave. Ao fundo, uma parede de cor neutra, uma luminária com o logo da Alura e um vaso de planta.

Esse curso é para quem está dando os primeiros passos na construção de APIs Restful. E que pretende ou já está usando o NestJS em suas aplicações.

O projeto que vamos desenvolver é uma API Restful, no back-end, que foi muito inspirada em projetos como Mercado Livre ou Enjoei, onde as pessoas podem se cadastrar e colocar seus produtos disponíveis na loja.

Durante as aulas deste curso, desenvolveremos juntos:

E durante os exercícios você farão a parte de produtos:

Neste curso, não lidaremos com banco de dados, até porque vamos focar principalmente nos conceitos de construção de APIs Restful e faremos isso usando o NestJS com todas as bibliotecas e integrações que ele possui.

O banco de dados veremos em um outro momento, em outro treinamento aqui na Alura.

Lembre-se de focar bastante nos exercícios, pois teremos muita mão na massa durante este curso.

As ferramentas que utilizaremos são:

Para este curso, usaremos algumas ferramentas como o Visual Studio Code, o próprio NodeJS com o NPM para instalar as dependências, mas fique à vontade se quiser usar o Yarn, e usaremos o Postman para testar nossas requisições.

Para ter um melhor aproveitamento deste curso, é fundamental que você conheça o básico sobre TypeScript, um pouco sobre seus decorators, e também já tenha estudado a construção de APIs com Node, se ainda não tiver esses conhecimentos veja os cursos disponíveis aqui na Alura sobre Node e TypeScript.

Estou animado para construir essa aplicação com você e te espero no próximo vídeo.

Conhecendo o Nest - O que é o NestJS

Boas-vindas à primeira aula do curso sobre NestJS. Vamos desenvolver uma API seguindo o padrão Restful usando o NestJS.

O projeto que vamos desenvolver parece uma API que poderia ser usada em sites como Enjoei ou Mercado Livre, por exemplo, onde as pessoas podem entrar, cadastrar seus produtos e realizar suas vendas.

Não vamos entrar na parte de venda e pagamento, mas veremos toda a construção de uma API Restful na qual as pessoas conseguem se cadastrar e cadastrar seus produtos.

Antes de começarmos a escrever código, vamos entrar no site do NestJS para entender o que ele é e como pode nos ajudar na construção dessa aplicação.

O site nos informa que o Nest é um framework para o NodeJS que nos ajuda a construir aplicações de forma eficiente e confiável, e escalável para o lado do servidor.

Ao clicarmos no link do menu "Documentation" (documentação), vamos para a página que tem um texto introdutório que cita as motivações que o criador do Nest teve para construí-lo.

Veremos algumas palavras-chaves que descrevem um pouco do que o NestJS nos traz como benefício.

ele suporta TypeScript, que já vem configurado; permite trabalharmos de forma orientada a objetos, funcional ou usando programação reativa; e ele usa outras bibliotecas como base para o funcionamento dele, uma dessa bibliotecas é o ExpressJS, que vem configurado por padrão, e também podemos usar o Testify se fizer sentido no projeto.

Nessa introdução da documentação ele fala um pouco sobre a filosofia por trás da construção do NestJS e também tem um passo a passo de como iniciar um projeto.

No próximo vídeo começaremos o nosso projeto, te encontro lá!

Conhecendo o Nest - Criando o projeto

Nesta aula começaremos a criar o projeto da nossa loja, a API Restful que vamos construir com NestJS.

Na documentação encontraremos dicas de como criar um projeto com NestJS.

O NestJS tem uma linha de comando que cria e configura todas as dependências que ele precisa para funcionar e faz isso de forma automática. Basta executarmos um comando e ele cria o package.json, baixa as dependências e deixa o projeto completamente configurado para nós começarmos a escrita do código.

Estes são os comandos informados na documentação paras instalação e criação de novo projeto:

$ npm i -g @nestjs/cli
$ nest new project-name

Poderíamos usar o comando npm i -g @nestjs/cli para instalar a linha de comando na ferramenta, para conseguir criar projetos com o NestJS. E depois, para criar um projeto, poderíamos usar nest new project-name.

Mas eu, pessoalmente, não gosto muito de instalar ferramentas de linhas de comando de frameworks de forma grupal, até porque se tivermos projetos usando esse mesmo framework com pessoas diferentes pode ter algum problema.

Então, faremos de um jeito um pouco diferente, mas fique à vontade para fazer como a documentação indica, se você preferir.

Vamos abrir o terminal, já estou na pasta com meu usuário, C: \_alura-users\Wanderson Macedo. Agora vamos digitar o comando para o NestJS criar o projeto.

Diferente do que está na documentação, vamos digitar npx @nestjs/cli e passaremos o comando para criar o projeto que será nomeado como "loja".

npx @nestjs/cli new loja

Após pressionarmos "Enter" o NPX vai perguntar se queremos instalar o pacote do CLI, vamos responder que sim. E vamos esperar a CLI criar o projeto. Vai criar a parte de loja, o package.json, vai instalar todas as dependências que o NestJS precisa para funcionar.

Ele exibe uma lista com os arquivos criados e pergunta qual gerenciador de pacotes queremos usar no projeto e dá três opções: npm, yarn ou pnpm. Vamos selecionar o NPM e esperar algum tempo para instalação dos pacotes. Ele exibe também uma lista com os arquivos criados:

CREATE loja/ .eslintrec.js (665 bytes)
CREATE loja/prettierrc (51 bytes)
CREATE loja/nest-cli.json (118 bytes)
CREATE loja/package.json ( 1989 bytes)
CREATE loja/README.md (3340 bytes)
CREATE loja/tsconfig.build.json (546 bytes)
CREATE loja/src/app.controller.spec.ts (617 bytes)
CREATE loja/app.controller.ts (274 bytes)
CREATE loja/app.module.ts (249 bytes)
CREATE loja/app.service.ts (142 bytes)
CREATE loja/src/main.ts (208 bytes)
CREATE loja/test/app.e2e-spec.ts (630 bytes)
CREATE loja/test/jest-e2e.json (183 bytes)

Após executar, ele exibe a mensagem "Successfully created project loja" para indicar que nosso projeto foi criado e podemos entrar na pasta "loja" com o comando cd loja e executar o comando npm run start.Por padrão, o NPM executa o start se colocarmos apenas npm start.

cd loja
npm start

Ele vai imprimir alguns logs e não informa em qual porta está executando. Podemos abrir uma nova aba no navegador e acessar no navegador o endereço http://localhost:3000. O Servidor estará ouvindo requisições na porta 3000 e veremos uma mensagem de Hello World.

Agora vamos abrir o código do projeto. Eu usarei o VS Code, você pode usar o editor que preferir.

No VS Code, vamos abrir a pasta onde criamos o projeto "loja".

Agora, na seção "explorador" do VS Code, podemos ver os arquivos criados para o nosso projeto. Temos, por exemplo, o package.json que já vem com vários comandos de build, de formatação de código, inicializar o servidor, testes configurados, etc.

O NestJS já traz todas as configurações de teste, podemos ver que foi criada a pasta "test" que tem um arquivo com o teste como exemplo.

na pasta "src" temos uma série de arquivos:

O main.ts é o arquivo que inicializa o nosso projeto e fica ouvindo as requisições na porta 3000, app.listen(3000). Em breve entenderemos como os outros arquivos funcionam.

Primeiro, vamos dar uma olhada de onde vem aquele Hello World que acessamos no navegador. Vamos abrir o arquivo app.controller.ts:

import { Controller, Get} from '@nestjs/common';
import { AppService } from './app.service';

@Controller() 
 export class AppController {
 constructor(private readonly appService: AppService) {}

  @Get() 
  getHello(): string {
    return this.appService.getHello();
 }
}

Por ser em TypeScript o NestJS tem vários decorators para nós usarmos, isso facilita muito o desenvolvimento. Neste arquivos temos um @Controller, uma classe AppController, e tem um @Get() que retorna a execução do this.appService.getHello(). E o AppService é recebido no construtor da classe AppController.

Vamos clicar na classe AppService pressionando o "Ctrl", assim conseguimos abrir o arquivo app.service.ts:

import { Injectable } from '@nestjs/common';

@Injectable()
  port class AppService {
  getHello(): string {
  return 'Hello World!';
  }
}

Podemos ver que ele tem alguns decorators e tem o método getHello() que retorna o Hello World que vimos no navegador.

Inclusive, neste arquivo podemos substituir "Hello World" por "Minha Loja". Salvar este arquivo e atualizar a página no navegador.

A mensagem não mudou. O que aconteceu?

Nós inicializamos um servidor que não observa as mudanças nos nossos arquivos e por isso ele não reflete as atualizações na página do navegador. Para termos essa visualização contínua das atualizações acontecendo, precisamos executar o servidor de desenvolvimento.

Então, no terminal, vamos encerrar o processo e digitar/;

npm run start:dev

Ele vai inicializar em modo de desenvolvimento e ficará observando os arquivos. Agora, podemos atualizar a página no navegador e veremos que a mensagem que está na página mudou para "Minha Loja!".

Agora sim podemos iniciar a escrita de código da nossa aplicação. Começaremos no próximo vídeo!

Sobre o curso Nest.js: criando uma API Restful

O curso Nest.js: criando uma API Restful possui 191 minutos de vídeos, em um total de 49 atividades. Gostou? Conheça nossos outros cursos de Node.JS em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Node.JS acessando integralmente esse e outros cursos, comece hoje!

Plus

De
R$ 1.800
por
12X
R$109
à vista R$1.308
  • Acesso a TODOS cursos por 1 ano

    Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Certificado

    A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.

  • Mentorias com especialistas

    No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.

  • Comunidade exclusiva

    Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.

  • Acesso ao conteúdo das Imersões

    Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.

  • App Android e iOS para estudar onde quiser

    Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.

Matricule-se

Pro

De
R$ 2.400
por
12X
R$149
à vista R$1.788
  • Acesso a TODOS cursos por 1 ano

    Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Certificado

    A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.

  • Mentorias com especialistas

    No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.

  • Comunidade exclusiva

    Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.

  • Acesso ao conteúdo das Imersões

    Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.

  • App Android e iOS para estudar onde quiser

    Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.

  • Luri, a inteligência artificial da Alura

    Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.

  • Alura Língua - Inglês e Espanhol

    Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.

Matricule-se

Ultra

12X
R$209
à vista R$2.508
  • Acesso a TODOS cursos por 1 ano

    Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Certificado

    A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.

  • Mentorias com especialistas

    No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.

  • Comunidade exclusiva

    Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.

  • Acesso ao conteúdo das Imersões

    Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.

  • App Android e iOS para estudar onde quiser

    Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.

  • Luri, com mensagens ILIMITADAS

    Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.

  • Luri Vision, a IA que enxerga suas dúvidas

    Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.

  • Alura Língua - Inglês e Espanhol

    Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.

  • 6 Ebooks da Casa do Código

    Receba cupons da Casa do Código, a editora da Alura, e escolha ebooks que acompanharão a sua jornada de aprendizado para sempre.

Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas