Introdução • Dependências • API Endpoints • Modelo conceitual
A aplicação consiste em um sistema de comércio eletrônico onde é possível realizar funcionalidades tais como manter um cadastro de produtos, pesquisar produtos para fins de catálogo e carrinho de compras, registrar e recuperar pedidos, consultas ao banco de dados, login e controle de acesso.
Antes de começar, certifique-se de atender aos seguintes requisitos:
-
Java Development Kit (JDK) 21: Certifique-se de ter o JDK 21 instalado em sua máquina. Você pode baixá-lo no site oficial da Oracle.
-
Apache Maven: Este projeto usa Maven para gerenciamento de dependências e automação de builds. Você pode baixar o Maven no site oficial do Maven.
Siga os passos abaixo para configurar o ambiente de desenvolvimento:
- Clone o repositório:
git clone https://github.com/BrunoSola/Commerce.git
- Acesse o repositório:
cd Commerce
- Execute o projeto:
mvn spring-boot:run
-
As principais dependências usadas neste projeto são:
- Spring Boot Starter Data JPA
- Spring Boot Starter Web
- H2 Database
- Spring Boot Starter Test
- Spring Boot Starter Validation
- Spring Boot Starter Security
- Spring Security Test
- Spring Security OAuth2 Authorization Server
- Spring Boot Starter OAuth2 Resource Server
- Recomenda-se o uso da ferramenta Postman para testar os endpoints.
Método | Endereço | Descrição | Permissão |
---|---|---|---|
GET | /categories | Retorna todas as categorias. | TODOS |
GET | /orders/{id} | Retorna pedido por id. | USUÁRIO DO PEDIDO/ADMIN |
GET | /products | Retorna todos os produtos. | TODOS |
GET | /products/{id} | Retorna produto por id. | TODOS |
GET | /user/me | Retorna usuário logado. | USUÁRIO AUTENTICADO |
POST | /oauth2/token | Realiza o login. | USUÁRIO CADASTRADO |
POST | /orders | Registrar um novo pedido. | USUÁRIO AUTENTICADO/ADMIN |
POST | /products | Registrar um novo produto. | ADMIN |
PUT | /products/{id} | Atualiza um produto por id. | ADMIN |
DELETE | /products/{id} | Remove um produto por id. | ADMIN |
RESPONSE
[
{
"id": 1,
"name": "Livros"
},
{
"id": 2,
"name": "Eletrônicos"
},
{
"id": 3,
"name": "Computadores"
}
]
- Note: Usuário precisa ser autenticado.
RESPONSE
{
"id": 1,
"moment": "2022-07-25T13:00:00Z",
"status": "PAID",
"client": {
"id": 1,
"name": "Maria Brown"
},
"payment": {
"id": 1,
"moment": "2022-07-25T15:00:00Z"
},
"items": [
{
"productId": 1,
"name": "The Lord of the Rings",
"price": 90.5,
"quantity": 2,
"imgUrl": "https://raw.githubusercontent.com/devsuperior/dscatalog-resources/master/backend/img/1-big.jpg",
"subTotal": 181.0
},
{
"productId": 3,
"name": "Macbook Pro",
"price": 1250.0,
"quantity": 1,
"imgUrl": "https://raw.githubusercontent.com/devsuperior/dscatalog-resources/master/backend/img/3-big.jpg",
"subTotal": 1250.0
}
],
"total": 1431.0
}
RESPONSE
{
"totalElements": 25,
"totalPages": 2,
"size": 20,
"content": [
{
"id": 1,
"name": "The Lord of the Rings",
"price": 90.5,
"imgUrl": "https://raw.githubusercontent.com/devsuperior/dscatalog-resources/master/backend/img/1-big.jpg"
},
{
"id": 2,
"name": "Smart TV",
"price": 2190.0,
"imgUrl": "https://raw.githubusercontent.com/devsuperior/dscatalog-resources/master/backend/img/2-big.jpg"
} ...
]
}
RESPONSE
{
"access_token": "eyJraWQiOiIxZTMwZGNhOS1hNGVhLTQ0YzYtOThhNC1mMmQyZDY4MzhmNzgiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJteWNsaWVudGlkIiwiYXVkIjoibXljbGllbnRpZCIsIm5iZiI6MTcxOTE2NjgxNywiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwIiwiZXhwIjoxNzE5MjUzMjE3LCJpYXQiOjE3MTkxNjY4MTcsImp0aSI6IjlhNzM2ZDE3LTA5NGEtNGNiZC05YTFjLTY0MjI0MmNhM2ZkNCIsImF1dGhvcml0aWVzIjpbIlJPTEVfQ0xJRU5UIl0sInVzZXJuYW1lIjoibWFyaWFAZ21haWwuY29tIn0.ahAVOgczWSyOR3GzrLh9pptMRyru0YZgbflT3VFIyYNe-qADZK5JEds786m_RhVApS4mS8WqxEySEZJjdVF5l1VUJDJHtG8QWObGzzN--Nvghobi8pVedLAVKH5dDH38EL6OeehOamLHoGt3u595H8YRi0oX3vYEifsnpDZSLsB6J-suXu6nQOf9RI0cDRr3-STLF0xYCRYPMC4HXbDcaP0Ds-4_jjiNtl-pZB-63USbFSnK0zhNmjYmtBubaNvhA878shF_v1pvptTiy9S70yoXPENBPHNeKntxVq51BChKvlVi-08rFJaQJ-haPT9NP_F81-8gVaf5ZfVFbiJaFg",
"token_type": "Bearer",
"expires_in": 86400
}
REQUEST
{
"items": [
{
"productId": 1,
"quantity": 2
},
{
"productId": 5,
"quantity": 1
}
]
}
REQUEST
{
"name": "Meu produto",
"description": "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Qui ad, adipisci illum ipsam velit et odit eaque reprehenderit ex maxime delectus dolore labore, quisquam quae tempora natus esse aliquam veniam doloremque quam minima culpa alias maiores commodi. Perferendis enim",
"imgUrl": "https://raw.githubusercontent.com/devsuperior/dscatalog-resources/master/backend/img/1-big.jpg",
"price": 50.0,
"categories": [
{
"id": 2
},
{
"id": 3
}
]
}
REQUEST
{
"name": "Produto atualizado",
"description": "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Qui ad, adipisci illum ipsam velit et odit eaque reprehenderit ex maxime delectus dolore labore, quisquam quae tempora natus esse aliquam veniam doloremque quam minima culpa alias maiores commodi. Perferendis enim",
"imgUrl": "https://raw.githubusercontent.com/devsuperior/dscatalog-resources/master/backend/img/1-big.jpg",
"price": 200.0,
"categories": [
{
"id": 2
},
{
"id": 3
}
]
}