Este é um projeto de exemplo de um aplicativo de comércio eletrônico que demonstra operações CRUD (Create, Read, Update, Delete) em relação a produtos, pedidos e clientes. O aplicativo oferece funcionalidades básicas de gerenciamento de um comércio eletrônico, permitindo adicionar, visualizar, atualizar e excluir produtos, realizar pedidos e gerenciar informações de clientes.
- 🔒 Cadastro, leitura, atualização e exclusão de produtos e usuários.
- 🚀 Realização de pedidos.
- 📦 Gerenciamento de clientes.
- 💻 Autenticação com Jwt
- 💻 Linguagem de Programação: Java
- 📦 Banco de Dados: Banco de Dados Relacional (por exemplo, MySQL)
- 💻 Implementação de Clean Architecture
- 💻 Pensamento de DDD- Domain Drive Design
Antes de iniciar, certifique-se de ter as seguintes dependências instaladas:
Java Development Kit (JDK) - Versão 17 ou superior. Maven
- Clone o repositório:
git clone https://github.com/Ar3secchim/crud-Ecommerce-App
cd buy-foreign-currency
- Subir o container do banco de dados
docker compose -f docker-compose.yml
- Fazer as migrações para o banco de dados (projeto está usando flyway com gerenciador de migration)
http://localhost:8081/login/
Este é um pedido POST para realizar o login. O Response fornece um token de autorização.
{
"email": "[email protected]",
"password": "@Awq1dffgdd",
}
Senha tem seguir regras de um caractér especial, uma letra maiuscula, uma letra minuscula e um numero.
Reponse (json)
{
"token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJyc2Rhc2Rzc0BnbWFpbC5jb20iLCJpZCI6MSwibmFtZSI6IlJlIFNlY2NoaW0iLCJleHAiOjE2OTc3MjMyNTUsImlzcyI6ImNydWQifQ.Agz6MfCfvPqM6odXkb9Rt3InOMciiue9fOTnI3wG0LoQRph3Syat8kwy-KSaHfvotDO-w5CQ-LiWKr6\_u2GXqw"
}
Esta seção descreve os métodos relacionados aos clientes.
http://localhost:8081/customer
Este é um pedido GET e é usado para "obter" dados de um ponto final. Não há corpo de pedido para um pedido GET, mas você pode usar parâmetros de consulta para especificar o recurso do qual deseja obter dados (por exemplo, neste pedido, temos id=1
).
Uma resposta GET bem-sucedida terá um status de 200 OK
e deve incluir algum tipo de corpo de resposta - por exemplo, conteúdo da web HTML ou dados JSON.
http://localhost:8081/customer
Este é um pedido GET e é usado para "obter" dados de um ponto final. Não há corpo de pedido para um pedido GET, mas você pode usar parâmetros de consulta para especificar o recurso do qual deseja obter dados (por exemplo, neste pedido, temos id=1
).
Uma resposta GET bem-sucedida terá um status de 200 OK
e deve incluir algum tipo de corpo de resposta - por exemplo, conteúdo da web HTML ou dados JSON.
http://localhost:8081/customer/name/renara
Este é um pedido GET e é usado para "obter" dados de um ponto final. Não há corpo de pedido para um pedido GET, mas você pode usar parâmetros de consulta para especificar o recurso do qual deseja obter dados (por exemplo, neste pedido, temos id=1
).
Uma resposta GET bem-sucedida terá um status de 200 OK
e deve incluir algum tipo de corpo de resposta - por exemplo, conteúdo da web HTML ou dados JSON.
http://localhost:8081/customer
Este é um pedido POST, que envia dados para uma API por meio do corpo do pedido. Este pedido envia dados em formato JSON, e os dados são refletidos na resposta.
Um pedido POST bem-sucedido normalmente retorna um código de resposta 200 OK
ou 201 Created
.
Body (json)
{
"name": "Name LastName",
"email": "[email protected]",
"address": "rua maria jose, 000",
"password":"@Awq1dffgdd"
}
http://localhost:8081/customer/10
Este é um pedido PUT e é usado para substituir uma peça de dados existente. Por exemplo, após criar uma entidade com um pedido POST, você pode querer modificá-la posteriormente. Isso pode ser feito usando um pedido PUT. Normalmente, você identifica a entidade sendo atualizada incluindo um identificador na URL (por exemplo, id=1
).
Um pedido PUT bem-sucedido normalmente retorna um código de resposta 200 OK
.
Body (json)
{
"name": "Name LastName",
"email": "[email protected]",
"address": "rua maria jose, 000",
"password":"@Awq1dffgdd"
}
http://localhost:8081/customer/8
Este é um pedido DELETE e é usado para excluir dados que foram criados anteriormente por meio de um pedido POST. Normalmente, você identifica a entidade a ser excluída incluindo um identificador na URL (por exemplo, id=1
).
Um pedido DELETE bem-sucedido normalmente retorna um código de resposta 200 OK
, 202 Accepted
ou 204 No Content
.
Esta seção descreve os métodos relacionados aos produtos.
http://localhost:8081/product
Request Headers
Authorization
Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJyc2Rhc2Rzc0BnbWFpbC5jb20iLCJpZCI6MSwibmFtZSI6IlJlIFNlY2NoaW0iLCJleHAiOjE2OTc3MjMyNTUsImlzcyI6ImNydWQifQ.Agz6MfCfvPqM6odXkb9Rt3InOMciiue9fOTnI3wG0LoQRph3Syat8kwy-KSaHfvotDO-w5CQ-LiWKr6_u2GXqw
http://localhost:8081/product/1
Este é um pedido GET e é usado para "obter" dados de um ponto final. Não há corpo de pedido para um pedido GET, mas você pode usar parâmetros de consulta para especificar o recurso do qual deseja obter dados.
http://localhost:8081/product
Este é um pedido POST, que envia dados para uma API por meio do corpo do pedido. Este pedido envia dados em formato JSON, e os dados são refletidos na resposta.
Request Headers
Authorization |
---|
Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJyc2Rhc2Rzc0BnbWFpbC5jb20iLCJpZCI6MSwibmFtZSI6IlJlIFNlY2NoaW0iLCJleHAiOjE2OTc3MjMyNTUsImlzcyI6ImNydWQifQ.Agz6MfCfvPqM6odXkb9Rt3InOMciiue9fOTnI3wG0LoQRph3Syat8kwy-KSaHfvotDO-w5CQ-LiWKr6_u2GXqw |
Body (json)
{
"name": "PS5",
"description": "console game com ssd 1 terabyte",
"price": 4586.57
}
http://localhost:8081/product/1
Este é um pedido DELETE para excluir um produto com um ID específico.
Body (json)
{
"name": "PS5",
"description": "console game com ssd 1 terabyte",
"price": 4586.57
}
Esta seção descreve os métodos relacionados aos pedidos.
http://localhost:8081/order
Este é um pedido POST para criar um novo pedido. O pedido cria um pedido com base nos dados fornecidos no corpo da solicitação.
Request Headers
Authorization |
---|
Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJyc2Rhc2Rzc0BnbWFpbC5jb20iLCJpZCI6MSwibmFtZSI6IlJlIFNlY2NoaW0iLCJleHAiOjE2OTc3MjMyNTUsImlzcyI6ImNydWQifQ.Agz6MfCfvPqM6odXkb9Rt3InOMciiue9fOTnI3wG0LoQRph3Syat8kwy-KSaHfvotDO-w5CQ-LiWKr6_u2GXqw |
Body (json)
{
"customer": 1
}
http://localhost:8081/order
Este é um pedido GET para obter a lista de pedidos. Ele retorna a lista de todos os pedidos disponíveis.
Request Headers
Authorization |
---|
Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJyc2Rhc2Rzc0BnbWFpbC5jb20iLCJpZCI6MSwibmFtZSI6IlJlIFNlY2NoaW0iLCJleHAiOjE2OTc3MjMyNTUsImlzcyI6ImNydWQifQ.Agz6MfCfvPqM6odXkb9Rt3InOMciiue9fOTnI3wG0LoQRph3Syat8kwy-KSaHfvotDO-w5CQ-LiWKr6_u2GXqw |
http://localhost:8081/order/1
Este é um pedido GET para obter detalhes de um pedido específico com base no ID fornecido.
http://localhost:8081/order/1
Este é um pedido DELETE para excluir um pedido com um ID específico.
Esta seção descreve os métodos relacionados aos itens de pedido.
http://localhost:8081/order/1
Este é um pedido POST para adicionar um item a um pedido específico com base no ID fornecido.
Request Headers
Authorization |
---|
Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJyc2Rhc2Rzc0BnbWFpbC5jb20iLCJpZCI6MSwibmFtZSI6IlJlIFNlY2NoaW0iLCJleHAiOjE2OTc3MjMyNTUsImlzcyI6ImNydWQifQ.Agz6MfCfvPqM6odXkb9Rt3InOMciiue9fOTnI3wG0LoQRph3Syat8kwy-KSaHfvotDO-w5CQ-LiWKr6_u2GXqw |
Body (json)
{
"product": 1,
"amount": 1
}
http://localhost:8081/order/ordemItem/2
Este é um pedido DELETE para excluir um item de pedido com um ID específico.
http://localhost:8081/order/ordemItem/2
Este é um pedido PUT e é usado para atualizar um item de pedido existente. Normalmente, você identifica o item sendo atualizado incluindo um identificador na URL.
Request Headers
Authorization |
---|
Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJyc2Rhc2Rzc0BnbWFpbC5jb20iLCJpZCI6MSwibmFtZSI6IlJlIFNlY2NoaW0iLCJleHAiOjE2OTc3MjMyNTUsImlzcyI6ImNydWQifQ.Agz6MfCfvPqM6odXkb9Rt3InOMciiue9fOTnI3wG0LoQRph3Syat8kwy-KSaHfvotDO-w5CQ-LiWKr6_u2GXqw |
Body (json)
{
"product": 1,
"amount": 1
}