/blogs-api-BE

Este projeto consiste no desenvolvimento de uma API RESTful para gerenciar um blog, utilizando Node.js e o ORM Sequelize para a interação com o banco de dados MySQL.

Primary LanguageJavaScript

Blogs api

Contexto

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.
🎲 Diagrama ER
page1

Objetivos do Projeto:

  1. 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.
  2. 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, e posts_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.
  3. 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.
  4. 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.

Funcionalidades Implementadas:

  • 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).

Habilidades Desenvolvidas:

  • 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 e categories 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.

Tecnologias Usadas

  • 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.

Entre em contato:

E-mail isaque oliveira WhatsApp