Skip to content

guilherme-oliveira-trybe/Blogs-API-Express-and-Sequelize

Repository files navigation

Blogs API 🖥

Consiste em uma API e um banco de dados para produção de conteúdo para um blog. É possível fazer login, e após isso gerenciar os posts atrelados ao seu user.

  • Contruída com Node.js, Express, JWT, Sequelize com MySQL e Docker
  • Utilizando as práticas do REST
  • Aplicada Arquitetura de Software, com as camadas de Modelo, Serviço e de Controladores

Instruções

Variáveis de Ambiente

Para rodar esse projeto sem utilizar Docker, você vai precisar adicionar as seguintes variáveis de ambiente no seu .env

NODE_ENV API_PORT

MY_SQL_HOST MY_SQL_USER MY_SQL_PASSWORD MY_SQL_DB_NAME MY_SQL_PORT

JWT_SECRET

Rodando localmente

Clone o projeto

  git clone [email protected]:guilherme-oliveira-trybe/Blogs-API-Express-and-Sequelize.git

Entre no diretório do projeto

  cd Blogs-API-Express-and-Sequelize
  • Utilizando Docker:
docker-compose up -d --build
docker exec -it blogs_api bash
npm install
npm start
  • Rodando Localmente:

Necessário configurar as variáveis de ambiente conforme documentação antes de rodar o projeto

  npm install
  npm start

Endpoints

Login

Método Funcionalidade URL
POST Realiza login do usuário e retorna o token http://localhost:3000/login

Nessa requisição é necessário informar o seguinte JSON:

{
  "email": "[email protected]",
  "password": "123456"
}

Usuário

Método Funcionalidade URL
POST Criar um novo usuário e retorna o token http://localhost:3000/user
GET Retorna os dados não sensíveis de todos os usuário http://localhost:3000/user
GET Retorna os dados não sensíveis de um usuário específico http://localhost:3000/user/:id
DELETE Deleta os dados do usuário através da informação do token http://localhost:3000/user/me

Na requisição POST, é necessário informar a os dados o usuário no formato a seguir:

{
  "displayName": "Usuário Exemplo",
  "email": "[email protected]",
  "password": "123456",
  "image": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
}

Categorias

Método Funcionalidade URL
POST Adiciona uma nova categoria http://localhost:3000/categories
GET Retorna todas as categorias cadastradas http://localhost:3000/categories

Na requisição POST, é necessário informar a o nome da categoria no formato a seguir:

{
  "name": "Typescript"
}

Post

Método Funcionalidade URL
POST Adiciona um novo post e realiza o vínculo com a tabela de categorias http://localhost:3000/post
GET Retorna todos os post contendo o usuário criador e as categorias http://localhost:3000/post
GET Retorna um post específico contendo o usuário criador e as categorias http://localhost:3000/post/:id
PUT Altera o título e o conteúdo de um post específico http://localhost:3000/post/:id
DELETE Deleta um post específico http://localhost:3000/post/:id
GET Filtra os post referente a informação passada como query http://localhost:3000/post/search?q=:searchTerm

Na requisição POST, é necessário informar a os dados do post no formato a seguir:

{
  "title": "Latest updates, August 1st",
  "content": "The whole text for the blog post goes here in this key",
  "categoryIds": [1, 2]
}

Na requisição PUT, os dados a serem atualizados devem estar no seguinte formato:

{
  "title": "Latest updates, August 1st",
  "content": "The whole text for the blog post goes here in this key"
}

About

Back-End Project - API de gerenciamento de posts de um blog

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages