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
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
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
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"
}
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"
}
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"
}
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"
}