Giter VIP home page Giter VIP logo

nlw-spacetime-server's Introduction

NLW Spacetime: Back-end (Trilha Ignite)

Aula 1 - Iniciando o projeto

  • Node.js (instalação)
  • Typescript + TSX
  • Fastify(framework)
  • ESLint
  • Prisma + SQLite

ESLint

Usamos as configurações do ESLint da Rocketseat como dependência no modo de desenvolvimento, através do comando: npm i @rocketseat/eslint-config -D. Para saber mais acesse o link do Github da Rocketseat.

Rodando o comando npm run lint, faz com que o ESLint analise todos os arquivos dentro do projeto e corrija os erros detectados de acordo com as configurações da Rocketseat.

Curiosidade

HTTPie é uma ferramenta, semelhante ao Postman e o Insomnia, para testar requisições via terminal.

Prisma

Usamos o comando npx prisma init --datasource-provider SQLite para indicar o uso do banco de dados SQLite e não o PostgreSQL que é o padrão.

Usando o comando npx prisma migrate dev que serve para ler o arquivo schema.prisma, detectar as alterações e criar as migrations (controle de versionamento do banco de dados da aplicação).

Com o comando npx prisma studio, podemos abrir uma GUI do banco de dados no navegador.

Para acessar o banco de dados através da API, instalamos o @prisma/client com o comando npm i @prisma/client.

Começando

Para rodar o servidor em modo de desenvolvimento:

npm run dev
# or
yarn dev
# or
pnpm dev

Abra http://localhost:3333 em conjunto com as rotas definidas no arquivo server.ts do diretório src com seu navegador para ver o resultado.

Aula 2 - CRUD

  • Estrutura do banco de dados
  • CRUD de memórias
    • Criação
    • Listagem
    • Delete
    • Atualização
  • Plugin de CORS

Crio o schema de Memory para criar a tabela, uso o comando npx prisma migrate reset e depois o npx prisma migrate dev e informo o nome create memories table para criar a migration.

O comando migrate dev atualiza seu banco de dados usando migrações durante o desenvolvimento e cria o banco de dados se ele não existir.

O comando migrate reset exclui e recria o banco de dados ou executa uma 'reinicialização suave' removendo todos os dados, tabelas, índices e outros artefatos.

A documentação do Prisma descreve o Prisma CLI

Separamos nosso código e deixamos o CRUD de memórias no arquivo memoriesRoutes.

Usamos a biblioteca de validação Zod.

Usamos o Insomnia para testar as requisições, ou o HTTPie (apresentado pelo Diego Fernandes na NLW).

Instalamos onpm install @fastify/cors para permitir o uso de CORS (Cross-origin resource sharing) em uma aplicação Fastify.

CORS é um mecanismo de segurança que permite que recursos restritos em uma página Web sejam solicitados de outro domínio. Resumindo, é o compartilhamento de recursos com origens diferentes.

Aula 3 - Autenticação

  • Rota de autenticação
  • Criação de token JWT
  • Rotas autenticadas
  • Rota de upload de arquivos
  • URL de arquivos estáticos

Fazemos a instalação do dotenv para fazer a leitura das variáveis de ambiente, executamos o comando npm i dotenv -D

Instalamos o jwt com npm i @fastify/jwt e seguimos a documentação

Criamos o arquivo auth.d.ts para declarar o tipo de informações que retornados pelo usuário do Fastify JWT.

Verificamos o usuário nas rotas de memórias.

Aula 4 - Upload e nova memória

  • Rota de upload de arquivos
  • Servindo arquivos estáticos

Instalamos o plug-in @fastify/multipart para analisar o tipo de conteúdo multipartes e facilitar o upload de arquivos.

Stream

No processo de upload de arquivos, usamos os streams que são coleções de dados. Essa coleção pode não estar disponível todo de uma vez e não precisam ficar alocados inteiramente na memória.

Elas são ferramentas poderosas para o desenvolvimento focado em grandes massas de dados de maneira que podemos trabalhar em pequenos pedaços e continuamente sem armazenar bits na RAM, além de ter a capacidade de enviar o resultado de uma stream para outra (composição de comandos).

Pipeline é um método de módulo para canalizar erros de encaminhamento de fluxos e limpar adequadamente e fornecer um retorno de chamada quando estiver concluído.

Promisify é uma função utilitária introduzida no Node.js na versão 8.0 e serve para transformar APIs 'legadas' ou um método que retorna respostas usando uma função callback para Promises.

O comando npm i @fastify/static instala o plug in para servir arquivos estáticos o mais rápido possível, ele habilita o acesso a arquivos de ambiente.

nlw-spacetime-server's People

Contributors

alice7h avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.