MrRioja / nodejs-api-rest

Projeto desenvolvido durante o módulo II do bootcamp Ignite da Rocketseat cujo objetivo foi entender como criar uma API REST com NodeJS utilizando boas práticas e tecnologias do ecossistema Node.

Home Page:https://nodejs-rest-api-s0i4.onrender.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NodeJS - REST API

GitHub top language GitHub last commit

SobreNodeJS - API RESTInstalaçãoTecnologiasAutor

Sobre

Projeto desenvolvido durante o módulo II do bootcamp Ignite da Rocketseat cujo objetivo foi entender como criar uma API REST com NodeJS utilizando boas práticas e tecnologias do ecossistema Node.

NodeJS - API REST

Projeto desenvolvido durante o módulo II do Ignite 2023 na trilha de NodeJS cujo objetivo foi entender como construir uma API REST na prática utilizando as melhores práticas e ferramentas do ecossistema Javascript.

Capitulo 1 - Estrutura da aplicação

O primeiro capítulo do módulo foi voltado à estruturação da aplicação, durante as aulas que o compõem:

  • Conhecemos o Fastify (Framework web que utilizamos no projeto).
  • Entendemos o Typescript, como ele funciona, suas vantagens e como utiliza-lo em nossas aplicações.
  • Criarmos o servidor da nossa aplicação com Fastify e realizamos seu setup inicial.
  • Conhecemos o ESLint, as razões para usa-lo e como configura-lo.

Capitulo 2 - Banco de dados

Nesse capitulo vimos como utilizar banco de dados na nossa aplicação. Vimos quais as formas de acessar um banco através do código e as suas diferenças. Além disso, vimos:

  • O que é e como configurar o Knex na nossa aplicação.
  • O que são e como criar migrations.
  • Como criar tabelas utilizando o queryBuilder Knex.
  • Como realizar queries com o Knex.
  • Como definir e acessar variáveis de ambiente.
  • Como tratar env com a lib de validação Zod.

Capitulo 3 - Implementando as rotas

Aqui o conteúdo foi o core da projeto, definimos os requisitos funcionais e não funcionais e as regras de negócio da nossa aplicação. Abaixo uma lista dos assuntos abordados e tarefas realizadas durante esse capitulo:

  • Definição dos Requisitos funcionais, não funcionais e Regras de negocio:

    • Requisitos Funcionais (RF):

      • O usuário deve poder criar uma conta.
      • O usuário deve poder obter um extrato da sua conta.
      • O usuário deve poder visualizar uma transação única.
      • O usuário deve poder listar todas transações que já ocorreram.
    • Regras Não Funcionais (RNF):

      • Será criado ao longo da aplicação.
    • Regras de Negócios (RN):

      • O usuário só pode visualizar transações que ele criou.
      • Deve ser possível identificar o usuário entre as requisições.
      • A transação pode do tipo crédito que somará ao valor total ou débito que será subtraído.
  • Compreensão e adição de plugins no Fastify.

  • Criação de transações.

  • Como adicionar tipagem no Knex.

  • Listagem de transações.

  • Resumo de transações.

  • Como utilizar cookies no Fastify.

  • Como validar existência de cookie.

  • Como configurar um hook global.

Capitulo 4 - Testes automatizados

Nesse capitulo entendemos sobre a importância de realizar testes automatizados, incluindo os conceitos de testes unitários, testes de integração e testes e2e, assim como a importância da pirâmide de testes para se ter uma estratégia de testes sólida e eficiente. Durante as aulas nós:

  • Conhecemos os tipos e o que é a piramide de testes.

    • Testes unitários são testes que validam o comportamento de uma única unidade de código, como uma função ou método. Eles são úteis para garantir que cada parte da aplicação esteja funcionando corretamente, sem depender de outras partes.

    • Testes de integração são testes que validam a integração entre várias partes da aplicação, como a integração entre a camada de banco de dados e a camada de serviço. Eles são importantes para garantir que a aplicação esteja funcionando corretamente como um todo.

    • Testes e2e (end-to-end) são testes que validam o comportamento da aplicação como um todo, simulando a interação do usuário com a aplicação. Eles são importantes para garantir que a aplicação esteja funcionando corretamente em todos os níveis, desde a camada de interface até a camada de banco de dados.

    • A pirâmide de testes é uma estratégia que se baseia em ter mais testes unitários e menos testes de integração e e2e, pois testes unitários são mais rápidos e fáceis de escrever e manter do que outros tipos de testes.

  • Criamos testes para nossa API.

  • Categorizamos os testes criados.

  • Configuramos um banco de teste.

Capitulo 5 - Preparando app para deploy

No capitulo final do módulo vimos:

  • Como preparar nossa aplicação para ir ao ar.
  • Configurações necessárias e pontos de atenção para o deploy.
  • Uso da ferramenta tsup para buildar o projeto.
  • Como fazer o deploy da nossa API REST na plataforma Render.

As requisições para testar a API estão disponíveis no botão abaixo e o link para acessar a API no ar está na descrição do repositório:

Run in Insomnia

Instalação

Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Git e Node.js. Além disso é bom ter um editor para trabalhar com o código como VSCode.

🎲 Rodando o Back End (servidor)

# Clone este repositório
$ git clone git@github.com:MrRioja/nodejs-api-rest.git

# Acesse a pasta do projeto no terminal/cmd
$ cd nodejs-api-rest

# Instale as dependências
$ npm install
# Caso prefira usar o Yarn execute o comando abaixo
$ yarn

# Execute a aplicação em modo de desenvolvimento
$ npm run dev
# Caso prefira usar o Yarn execute o comando abaixo
$ yarn dev

# O servidor iniciará na porta 3333 ou na porta definida no arquivo .env na variável PORT - acesse <http://localhost:3333>

Tecnologias

My Skills

Autor

Luiz Rioja

Backend Developer

LinkedIn GitHub Gmail WhatsApp Skype

About

Projeto desenvolvido durante o módulo II do bootcamp Ignite da Rocketseat cujo objetivo foi entender como criar uma API REST com NodeJS utilizando boas práticas e tecnologias do ecossistema Node.

https://nodejs-rest-api-s0i4.onrender.com

License:MIT License


Languages

Language:TypeScript 100.0%