https://github.com/joaoespacheco/trybe-project-26-blogs-api
API RESTful que gerencia a criação, modificação, leitura e exclusão de conteúdos para um blog no banco de dados
https://github.com/joaoespacheco/trybe-project-26-blogs-api
docker expressjs javascript joi-validation json-web-token mysql nodejs sequelize
Last synced: 2 months ago
JSON representation
API RESTful que gerencia a criação, modificação, leitura e exclusão de conteúdos para um blog no banco de dados
- Host: GitHub
- URL: https://github.com/joaoespacheco/trybe-project-26-blogs-api
- Owner: joaoespacheco
- Created: 2022-12-03T23:46:15.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-01-13T02:22:07.000Z (over 3 years ago)
- Last Synced: 2025-01-22T09:33:13.102Z (over 1 year ago)
- Topics: docker, expressjs, javascript, joi-validation, json-web-token, mysql, nodejs, sequelize
- Language: JavaScript
- Homepage:
- Size: 521 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Blogs API 💻
## 📄 Sobre:
Projeto desenvolvido durante o módulo de back-end do curso de desenvolvimento web da [Trybe](https://www.betrybe.com/).
Neste projeto foi desenvolvida uma API RESTful e um banco de dados para a produção de conteúdo de um blog.
Para está aplicação foi utilizado o banco de dados MySQL e o ORM sequelize.
A API foi criada utilizando arquitetura MSC (model-service-controller).
Para as funções de autenticação foi utilizado a ferramenta JSON Web Token.
Desempenho
Aprovado com 100% de desempenho em todos os requisitos

Requisitos
Requisitos obrigatórios:
1. Crie migrations para as tabelas users, categories, blog_posts, posts_categories
2. Crie o modelo User em src/models/User.js com as propriedades corretas
3. Crie o endpoint POST /login, suas funcionalidades e validações necessárias
4. Crie o endpoint POST /user, suas funcionalidades e validações necessárias
5. Crie o endpoint GET /user, suas funcionalidades e validações necessárias
6. Crie o endpoint GET /user/:id, suas funcionalidades e validações necessárias
7. Crie o modelo Category em src/models/Category.js com as propriedades corretas
8. Crie o endpoint POST /categories, suas funcionalidades e validações necessárias
9. Crie o endpoint GET /categories, suas funcionalidades e validações necessárias
10. Crie o modelo BlogPost em src/models/BlogPost.js com as propriedades e associações corretas
11. Crie o modelo PostCategory em src/models/PostCategory.js com as propriedades e associações corretas
12. Crie o endpoint POST /post, suas funcionalidades e validações necessárias
13. Crie o endpoint GET /post, suas funcionalidades e validações necessárias
14. Crie o endpoint GET /post/:id, suas funcionalidades e validações necessárias
15. Crie o endpoint PUT /post/:id, suas funcionalidades e validações necessárias
Requisitos bônus:
16. Crie o endpoint DELETE /post/:id, suas funcionalidades e validações necessárias
17. Crie o endpoint DELETE /user/me, suas funcionalidades e validações necessárias
18. Crie o endpoint GET /post/search?q=:searchTerm, suas funcionalidades e validações necessárias
Diagrama Entidade-Relacionamento

## ⚙️ Execução
Para executar a aplicação inicie realizando o clone deste repositório com o comando abaixo.
git clone git@github.com:joaoespacheco/Trybe-Project.26-blogs-api.git
Navegue até a raíz do projeto.
cd Trybe-Project.26-blogs-api/
Uma vez na raiz do projeto, execute o comando abaixo para instalar as dependências do projeto.
npm install
Rodando a aplicação com o Docker
Na pasta raiz do projeto, suba o container através do docker-compose.yml, utilizando o comando abaixo.
docker-compose up -d
Entre no terminal do container
docker exec -it blogs_api bash
Caso não tenha instalado anteriormente, uma vez no terminal do container, execute o comando abaixo para instalar as dependências do projeto.
npm install
Para criar o banco e executar as migrations utilize o seguinte comando no terminal do container
npm run prestart
Para popular o banco criado utilize o seguinte comando no terminal do container
npm run seed
Para iniciar o servidor utilize o seguinte comando no terminal do container
npm run start
Para iniciar o servidor no modo de desenvolvimento utilize o seguinte comando no terminal do container
npm run debug
Para dropar o banco criado utilize o seguinte comando no terminal do container
npm run drop
## ↪️ Rotas:
A documentação referente as rotas foi confeccionada utilizando a ferramenta Swagger/OpenAPI e pode ser visualizada de duas maneiras:
### Acessando as informações das rotas localmente:
A documentação das rotas pode ser acessada após iniciar a aplicação localmente de acordo com as instruções da seção anterior chamada "Execução".
Para visualizar as rotas e testar as requisições você pode utilizar a rota http://localhost:3000/api-docs. Caso preferir, você também pode utilizar um cliente de requisições HTTP de sua preferência (Insomnia, Thunder Client, etc) para realizar os testes.
### Acessando as informações das rotas online:
Para visualizar as rotas você pode utilizar a plataforma Swagger Viewer [clicando aqui](https://swaggerviewer.ptr.red/spec/aHR0cHM6Ly9naXRodWIuY29tL2pvYW9lc3BhY2hlY28vVHJ5YmUtUHJvamVjdC4yNi1ibG9ncy1hcGkvcmF3L21haW4vc3JjL3N3YWdnZXIuanNvbg%3D%3D).
## 🤹🏽 Habilidades Desenvolvidas:
* Criar uma aplicação utilizando Express.js
* Criar uma API RESTful utilizando arquitetura MSC (Model-Service-Controller)
* Validar os dados das requisições utilizando a biblioteca Joi
* Criar um banco de dados, suas migrations, models e associações entre as tabelas
* Utilizar ORM Sequelize para realizar as conexões e as queries ao banco de dados
* Implementar autenticação via token utilizando JSON Web Token
## 🧰 Ferramentas:
* JavaScript
* Node.js
* Express.js
* DotEnv
* Joi
* MySQL
* Sequelize
* JSON Web Token
* Docker
* Swagger
## 📝 Desenvolvido por:
* [João Emanuel Soares Pacheco](https://github.com/joaoespacheco)