Skip to content

💡 | Repositório referente ao desenvolvimento de um API RESTfull, que permite o gerenciamento de produtos e de carrinho de compras

License

Notifications You must be signed in to change notification settings

devrafaelsoares/store-api-restful

Repository files navigation

🌐 Store API

API RESTful com ênfase nos conhecimento obtidos em Java e na utilização de seu framework Spring Boot .

Contributors Forks Stargazers Issues MIT License

📑 Tópicos:

⬇️ Instalação

📝 Pré requisitos:

  • ⚙️ Variáveis de ambiente

Será necessário a realizar configuração das variáveis de ambiente da aplicação no arquivo .env.example

APPLICATION_NAME=store-api

DATABASE_HOST=database
DATABASE_PORT=5432
DATABASE_NAME= # Enter the postgres database name
DATABASE_USERNAME= # Enter the postgres user name
DATABASE_PASSWORD= # Enter the postgres user password
DATABASE_URL=jdbc:postgresql://${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}

APPLICATION_SECURITY_USER= # Enter the application user name
APPLICATION_SECURITY_PASSWORD= # Enter the application user password

REDIS_HOST=redis
REDIS_PORT=6379
REDIS_EXPIRATION=15

JWT_SECRET= # Enter jwt secret
JWT_EXPIRATION=15

⚠️ Será necessário renomear o arquivo .env.example para .env.

  • 🐋 Iniciando os contâiners

Para inicializar a aplicação será necessário executar o seguinte comando no diretório da aplicação:

docker-composer up -d

ou

docker compose up

🚀 Endpoints

🔑 Autenticação

Registro

📍 Endpoint: http://localhost:8080/api/v1/auth/register

📨 Método: POST

🔒 Permissões permitidas: ADMIN


Login

📍 Endpoint: http://localhost:8080/api/v1/auth/login

📨 Método: POST

🔒 Permissões permitidas: Todas


📦 Produto

Listar todos os produtos

📍 Endpoint: http://localhost:8080/api/v1/products

📨 Método: GET

🔒 Permissões permitidas: ADMIN SELLER CLIENT


Listar produto pelo id

📍 Endpoint: http://localhost:8080/api/v1/product/{id}

📨 Método: GET

🔒 Permissões permitidas: ADMIN SELLER CLIENT


Cadastrar produto

📍 Endpoint: http://localhost:8080/api/v1/product

📨 Método: POST

🔒 Permissões permitidas: ADMIN SELLER


Atualizar produto (PUT)

📍 Endpoint: http://localhost:8080/api/v1/product/{id}

📨 Método: PUT

🔒 Permissões permitidas: ADMIN SELLER


Atualizar produto (PATCH)

📍 Endpoint: http://localhost:8080/api/v1/product/{id}

📨 Método: PATCH

🔒 Permissões permitidas: ADMIN SELLER


🔖 Categoria

Listar todas as categorias

📍 Endpoint: http://localhost:8080/api/v1/categories

📨 Método: GET

🔒 Permissões permitidas: ADMIN SELLER CLIENT


Listar categoria pelo id

📍 Endpoint: http://localhost:8080/api/v1/category/{id}

📨 Método: GET

🔒 Permissões permitidas: ADMIN


Cadastrar categoria

📍 Endpoint: http://localhost:8080/api/v1/category

📨 Método: POST

🔒 Permissões permitidas: ADMIN


Atualizar categoria (PUT)

📍 Endpoint: http://localhost:8080/api/v1/category/{id}

📨 Método: PUT

🔒 Permissões permitidas: ADMIN


Atualizar categoria (PATCH)

📍 Endpoint: http://localhost:8080/api/v1/category/{id}

📨 Método: PATCH

🔒 Permissões permitidas: ADMIN


📷 Imagem

Lista imagem do produto

📍 Endpoint: http://localhost:8080/api/v1/product/{id}/image

📨 Método: GET

🔒 Permissões permitidas: ADMIN SELLER CLIENT


Cadastrar imagem do produto

📍 Endpoint: http://localhost:8080/api/v1/product/{id}/image

📨 Método: POST

🔒 Permissões permitidas: ADMIN SELLER


Atualizar imagem do produto

📍 Endpoint: http://localhost:8080/api/v1/product/{id}/image

📨 Método: PUT

🔒 Permissões permitidas: ADMIN SELLER


Deletar a imagem do produto

📍 Endpoint: http://localhost:8080/api/v1/product/{id}/image

📨 Método: DELETE

🔒 Permissões permitidas: ADMIN SELLER


❓Como usar ?

🪪 Autenticação no sistema

Para autenticar-se no sistema e acessar os recursos permitidos com base no nível de acesso, é necessário fornecer suas credenciais no mecanismo de autenticação.

📍 Endpoint: http://localhost:8080/api/v1/auth/login

📨 Método: POST

Exemplo de uma requisição utilizando o Postman:

Example Postman Login

Caso as credenciais sejam correspodentes com as cadastradas no sistema:

Example Postman Response Login

Após realizado a autenticação vá até a sessão Authorization e defina o tipo de autenticatição para Bearer Token e informe o valor do campo token:

Example Config Bearer Token

⚠️ Será necessário repetir esse procedimento para os endpoints que requer autorização do usuário.


🆕 Registro

Para efetuar o registro de um novo usuário, é necessário especificar tanto as credenciais do usuário quanto sua respectiva permissão:

Example Postman Register

Na eventualidade de os dados fornecidos serem válidos e não haver registro do usuário no sistema:

Example Postman Register Response


🧪 Tecnologias

Java

Adoção da linguagem de programação Java devido à sua aderência ao paradigma orientado a objetos (OOP) e à sua natureza multiplataforma.

Spring

Adoção do framework Spring Boot em virtude de sua eficácia no desenvolvimento de aplicações web e microsserviços, destacando-se pela habilidade de autoconfiguração de componentes.

Docker

Adoção do Docker em razão de sua infraestrutura fundamentada em containers, proporcionando virtualização e administração de serviços de forma mais eficiente, ágil e desacoplada.

Redis

Adoção do Redis devido à sua natureza como um armazenamento de estrutura de dados em memória. Isso possibilita a implementação de armazenamento em cache, alta disponibilidade e particionamento automático em diversos clusters.

Postgres

Adoção do banco de dados PostgreSQL em virtude de seu suporte a diversas otimizações de desempenho, flexibilidade, capacidade de personalização e aprimorada segurança.


📌 Contatos

LinkedIn Gmail Meu Portfolio

About

💡 | Repositório referente ao desenvolvimento de um API RESTfull, que permite o gerenciamento de produtos e de carrinho de compras

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published