O foco principal deste projeto é, com base nos ensinamentos da Trybe, desenvolver uma API e um banco de dados para a produção de conteúdo de um blog. O objetivo é criar uma aplicação utilizando Node.js e o pacote Sequelize para gerenciar as operações de CRUD (Create, Read, Update e Delete) de posts e usuários, seguindo os princípios de uma API RESTful.
O que é a Trybe?🤔
A Trybe é uma escola de desenvolvimento web genuinamente comprometida com o sucesso profissional de seus estudantes. Com o Modelo de Sucesso Compartilhado (MSC) oferecido pela Trybe Fintech, uma instituição financeira autorizada pelo Banco Central do Brasil, os alunos têm a opção de pagar apenas quando estiverem trabalhando.-
Desenvolver uma API RESTful:
- A API foi desenvolvida para gerenciar um blog, permitindo a criação, leitura, atualização e exclusão de posts e usuários.
- Cada post deve estar associado a um usuário, e categorias podem ser vinculadas aos posts, criando uma relação entre users, posts, e categories.
- A autenticação é implementada por meio de tokens, sendo necessário login para realizar operações específicas.
-
Migrations e Models:
- Utilizando o Sequelize, foram criadas migrations para estruturar o banco de dados e gerar as tabelas necessárias, como
users
,categories
,blog_posts
, eposts_categories
. - As models foram configuradas para refletir corretamente o diagrama de Entidade-Relacionamento (ER), garantindo que as operações de banco de dados sigam as regras estabelecidas.
- Utilizando o Sequelize, foram criadas migrations para estruturar o banco de dados e gerar as tabelas necessárias, como
-
Autenticação e Validação:
- A aplicação requer autenticação para acessar determinados endpoints, garantindo que apenas usuários autenticados possam criar, atualizar ou excluir posts.
- A validação de token é implementada por middlewares, que são responsáveis por verificar a validade dos tokens nas requisições.
-
Relacionamentos e Categorias:
- O projeto explora as relações entre posts e categorias, permitindo que os posts sejam vinculados a múltiplas categorias.
- Essas relações são tratadas através de associações no Sequelize, utilizando relações de 1:N e N:N.
-
Users:
- POST /login: Endpoint para login de usuários, retornando um token de autenticação.
- POST /user: Cadastro de novos usuários.
- GET /user: Listagem de todos os usuários (requer token).
- GET /user/:id: Exibe detalhes de um usuário específico (requer token).
-
Categories:
- POST /categories: Cadastro de novas categorias (requer token).
- GET /categories: Listagem de todas as categorias (requer token).
-
Posts:
- POST /post: Criação de novos posts vinculados a usuários e categorias (requer token).
- GET /post: Listagem de todos os posts, com suas respectivas categorias e autores (requer token).
- GET /post/:id: Exibição de um post específico pelo ID (requer token).
- PUT /post/:id: Atualização de posts (somente pelo autor, requer token).
- DELETE /post/:id: Exclusão de posts (somente pelo autor, requer token).
- GET /post/search?q=:searchTerm: Busca por posts com base no termo fornecido (requer token).
- Node.js e Sequelize: Utilização do ORM Sequelize para manipulação do banco de dados MySQL, abstraindo operações SQL e facilitando a integração com a API.
- Arquitetura RESTful: Desenvolvimento de uma API organizada em camadas, seguindo os princípios REST para a estruturação de endpoints e recursos.
- Autenticação com JWT: Implementação de autenticação por meio de tokens JWT para garantir a segurança de endpoints privados.
- Migrations e Models: Criação de models e migrations no Sequelize, respeitando o diagrama de Entidade-Relacionamento (ER).
- Validação de Dados: Implementação de validações em diversos endpoints, como o cadastro de usuários e posts, garantindo a integridade dos dados.
- Relações entre Tabelas: Exploração das associações de 1:N e N:N entre
users
,posts
ecategories
no banco de dados. - Middlewares: Uso de middlewares para autenticação e validação de dados antes da execução de operações críticas.
Este projeto oferece uma visão completa da criação de uma aplicação backend moderna, com funcionalidades robustas de gerenciamento de conteúdo, autenticação e integração com um banco de dados relacional.
- Node.js - Plataforma de execução de JavaScript no servidor.
- Express - Framework para Node.js que facilita a criação de APIs e gerenciamento de rotas.
- Sequelize - ORM (Object-Relational Mapping) para Node.js, utilizado para interagir com o banco de dados MySQL.
- MySQL - Banco de dados relacional utilizado para armazenar as informações de usuários, posts e categorias.
- Joi - Biblioteca para validação de dados no backend.
- JWT (JSON Web Token) - Utilizado para autenticação e geração de tokens de segurança.