Projeto desenvolvido durante o módulo de back-end do curso de desenvolvimento web da Trybe.
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.
Requisitos
Requisitos obrigatórios:
- Crie migrations para as tabelas users, categories, blog_posts, posts_categories
- Crie o modelo User em src/models/User.js com as propriedades corretas
- Crie o endpoint POST /login, suas funcionalidades e validações necessárias
- Crie o endpoint POST /user, suas funcionalidades e validações necessárias
- Crie o endpoint GET /user, suas funcionalidades e validações necessárias
- Crie o endpoint GET /user/:id, suas funcionalidades e validações necessárias
- Crie o modelo Category em src/models/Category.js com as propriedades corretas
- Crie o endpoint POST /categories, suas funcionalidades e validações necessárias
- Crie o endpoint GET /categories, suas funcionalidades e validações necessárias
- Crie o modelo BlogPost em src/models/BlogPost.js com as propriedades e associações corretas
- Crie o modelo PostCategory em src/models/PostCategory.js com as propriedades e associações corretas
- Crie o endpoint POST /post, suas funcionalidades e validações necessárias
- Crie o endpoint GET /post, suas funcionalidades e validações necessárias
- Crie o endpoint GET /post/:id, suas funcionalidades e validações necessárias
- 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
Para executar a aplicação inicie realizando o clone deste repositório com o comando abaixo.
git clone [email protected]: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
A documentação referente as rotas foi confeccionada utilizando a ferramenta Swagger/OpenAPI e pode ser visualizada de duas maneiras:
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.
Para visualizar as rotas você pode utilizar a plataforma Swagger Viewer clicando aqui.
- 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
- JavaScript
- Node.js
- Express.js
- DotEnv
- Joi
- MySQL
- Sequelize
- JSON Web Token
- Docker
- Swagger