Skip to content

Neste projeto, foram desenvolvidos uma API e um banco de dados para a produção de conteúdo para um blog

Notifications You must be signed in to change notification settings

TonyyCruz/blogs_api

Repository files navigation

Projeto Blogs Api

Neste projeto, foram desenvolvidos uma API e um banco de dados para a produção de conteúdo para um blog.



Diagrama DER (Diagrama de Entidade-Relacionamento)



📃 Sobre o Projeto

Foi desenvolvida uma aplicação em Node.js usando o pacote sequelize para fazer um CRUD de posts. Os endpoints foram ligados ao banco de dados seguindo os princípios do REST. Para criar posts, o usuario deve estar cadastrado e logad sendo validado por um token gerado atravez do JWT(json web token).


Rotas utilizáveis

Ver rotas
  • POST /user para cadastrar novo usuario. Utilize um body nesse formato:
{
  "displayName": "Monkey D. Luffy",
  "email": "luffy@pirateking.com",
  "password": "estoucomfome",
  "image": "https://img.assinaja.com/upl/lojas/mundosinfinitos/imagens/foto-one-piece.png"
}

  • POST /login para fazer login e receber um token. Utilize um body nesse formato:
{
  "email": "luffy@pirateking.com",
  "password": "estoucomfome"
}

  • POST /post para criar uma nova postagem. Utilize um body nesse formato:
{
  "title": "Serei o rei dos piratas",
  "content": "Vou encontrar todos os pegaços",
  "categoryIds": [1]
}

  • POST /categories para adicionar uma nova categoria. Utilize um body nesse formato:
{
  "name": "Animation"
}

  • GET /user traz todos os usuarios.

  • GET /user/:id traz o usuário de acordo com o id no banco de dados se ele existir.

  • GET /categories para buscar todas as categorias.

  • GET /post para trazer todos os blogs post.

  • GET /post/:id para trazer o blog post baseado no id do banco de dados se ele existir.

  • GET /post/search?q=<conteudo da busca> retornar um array de post que contenham em seu título ou conteúdo o termo passado na URL. Exemplo de url:
  http://localhost:<PORT>/post/search?q=comida

  • PUT /post/:id para atualizar o poste caso ele exista e pertença ao usuario logado. Utilize um body nesse formato:
{
  "title": "Lufeeeee",
  "content": "Cade minha comida"
}

  • PUT /sales/:id para atualizar a venda. Utilize um body nesse formato:
  [
    {
      "productId": 1,
      "quantity":2
    },
  ]

  • DELETE /post/:id deleta um blog post de acordo com o id caso a pessoa seja dona dele.

  • DELETE /user/me encontra o usuario logado travez do token de validação e o deleta.


🛠 Tecnologias e Bibliotecas utilizadas no desenvolvimento do projeto


🚀 Como executar o projeto

Pré-requisitos

Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas:

É recomendado utilizar algum cliente HTTP, como Postman ou o Insomnia.

Também é bom ter um editor para trabalhar com o código como VSCode


Clone o repositorio

git clone git@github.com:TonyyCruz/blogs_api.git

🐳 Rodando no Docker

Com Docker

Rode o serviço node com o comando

  docker-compose up -d
  • Esse serviço irá inicializar dois containers chamados blogs_api e outro chamado blogs_api_db.
    • A partir daqui você pode rodar o container via CLI ou abri-lo no VS Code.

Via CLI use o comando

docker exec -it blogs_api bash
  • Ele te dará acesso ao terminal interativo do container blogs_api(node) criado pelo compose, que está rodando em segundo plano.

Instale as dependências dentro do container com

npm install

⚠️Atenção: Caso opte por utilizar o Docker, TODOS os scripts disponíveis no package.json devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comando docker exec.


💻 Rodando Localmente

Instale as dependências com o comando

npm install
  • Para rodar o projeto desta forma, obrigatoriamente você deve ter o node instalado em seu computador.
    • Recomenda-se a versão ^16

⚠️Atenção: Não esqueça de renomear/configurar o arquivo .env.example


💡 Scripts prontos

Scripts
  • Criar o banco de dados e gerar as tabelas:
  npm run prestart
  • Limpar e popular o banco de dados:
  npm run seed
  • Iniciar o servidor Node:
  npm start
  • Iniciar o servidor Node com nodemon:
  npm run debug


About

Neste projeto, foram desenvolvidos uma API e um banco de dados para a produção de conteúdo para um blog

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages