📝 Proposta
Neste projeto, desenvolvi uma API e um banco de dados para a produção de conteúdo em um blog. Utilizei Node.js e o ORM Sequelize para realizar operações de CRUD nos posts.Os endpoints foram conectados ao banco de dados, seguindo os princípios do REST. Para criar um post, é necessário ter um usuário autenticado com JWT. A autenticação é feita por meio de tokens, que são validados nas requisições que exigem autenticação.
Além disso, utilizei categorias para classificar os posts, estabelecendo assim uma relação entre posts e categorias, e vice-versa.
🐳 Com Docker
Clone este repositório:
git clone git@github.com:vitor-nogueira-dev/blogs-api.gitEntre no diretório e instale as dependências:
cd blogs-api
npm installRode os serviços node e db com o comando docker-compose up -d --build
-
Lembre-se de parar o mysql se estiver usando localmente na porta padrão (3306), ou adapte, caso queria fazer uso da aplicação em containers;
-
Esses serviços irão inicializar um container chamado
blogs_apie outro chamadoblogs_api_db; -
A partir daqui você pode rodar o container
blogs_apivia CLI ou abri-lo no VS Code. -
Use o comando
docker exec -it blogs_api bash, ou para acessar o container e executar lá: -
Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.
-
Instale as dependências [Caso existam] com
npm installdentro do containerblogs_api
package.json (npm start, npm test, npm run dev, ...) devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comando docker exec citado acima.
npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador.
EADDRINUSE, quer dizer que sua aplicação já esta utilizando a porta 3001, seja com outro processo do Node.js (que você pode parar com o comando killall node) ou algum container! Neste caso você pode parar o container com o comando docker stop <nome-do-container>.
✨ Dica: Antes de iniciar qualquer coisa, observe os containers que estão em execução em sua máquina. Para ver os containers em execução basta usar o comando docker container ls, caso queira parar o container basta usar o comando docker stop <nome-do-container> e se quiser parar e excluir os containers, basta executar o comando docker-compose down
🐳 Sem Docker
Instale as dependências [Caso existam] com npm install
npm audit fix! Ele atualiza várias dependências do projeto, e essa atualização gera conflitos com o avaliador.
Node.js e NPM a ser utilizada é "node": ">=16.0.0" e "npm": ">=7.0.0", como descrito na chave engines no arquivo package.json. Idealmente deve-se utilizar o Node.js na versão 16.14, a versão na qual este projeto foi testado.
Crie um arquivo .env na raiz do projeto seguindo o padrão do arquivo env.example e o modifique de acordo com a necessidade.
Coloque env $(cat .env) antes de qualquer comando que for executar, por exemplo:
env $(cat .env) npm run dev📄 Documentação API
| Método | Endpoint | Descrição | Requisitos de Autenticação |
|---|---|---|---|
| POST | /login | Realiza o login do usuário | N/A |
| POST | /user | Adiciona um novo usuário | N/A |
| GET | /user | Retorna todos os usuários | Token de autenticação |
| GET | /user/:id | Retorna um usuário específico | Token de autenticação |
| POST | /categories | Adiciona uma nova categoria | Token de autenticação |
| GET | /categories | Retorna todas as categorias | Token de autenticação |
| POST | /post | Adiciona um novo post e vincula às categorias | Token de autenticação |
| GET | /post | Retorna todos os posts | Token de autenticação |
| GET | /post/:id | Retorna um post específico | Token de autenticação |
| PUT | /post/:id | Atualiza um post existente | Token de autenticação |
| DELETE | /post/:id | Deleta um post existente | Token de autenticação |
| DELETE | /user/me | Deleta o usuário logado | Token de autenticação |
| GET | /post/search?q=term | Retorna os posts que correspondem ao termo de busca | Token de autenticação |