Skip to content

API RESTful que gerencia a criação, modificação, leitura e exclusão de conteúdos para um blog no banco de dados

Notifications You must be signed in to change notification settings

joaoespacheco/Trybe-Project-26-blogs-api

Repository files navigation

Blogs API 💻

📄 Sobre:

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.


Desempenho Aprovado com 100% de desempenho em todos os requisitos

image

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

image


⚙️ Execução

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

↪️ 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.


🤹🏽 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:

About

API RESTful que gerencia a criação, modificação, leitura e exclusão de conteúdos para um blog no banco de dados

Topics

Resources

Stars

Watchers

Forks

Languages