Skip to content

API de um e-commerce de produtos em geral com Spring Boot 3, Docker, AWS, etc

Notifications You must be signed in to change notification settings

nicholasboari/ecommerce-boari-api

Repository files navigation

E-commerce Spring Boot 3 + AWS

Descrição

Este projeto é uma API de um e-commerce, na qual possui diversas funcionalidades como: autenticar usuário, autorizar rotas, cadastrar e remover produtos, fazer o upload de arquivos na nuvem utilizando o S3 da AWS, etc.

Tecnologias

  • Java 17
  • Maven
  • Docker
  • Spring Boot
  • Spring Data JPA
  • Spring Security
  • AWS SDK
  • JWT
  • MySQL
  • SpringDoc OpenAPI
  • Logging

Pré-requisitos

  • JRE 17
  • Maven

Sumário

Iniciar o projeto via Maven:

  1. Clone o repositório:
git clone github.com/nicholasboari/ecommerce-boari-api
  1. Acesse a pasta da api:
cd ecommerce-boari-api/api/
  1. Execute o projeto:
mvn spring-boot:run

Por padrão o projeto é executado em modo "test", no qual é usado um banco em memória (H2 database).

Iniciar o projeto via Docker Compose:

  1. Acesse a pasta raiz do projeto (ecommerce-boari-api):
cd ecommerce-boari-api/
  1. Execute o docker compose:
docker compose up

Requisições

Requisição de Login

Alguns endpoints são necessários o usuário estar autenticado.

Um usuário é inserido no banco assim que a aplicação é iniciada.

Dados do usuário:

  • id: 1
  • email: nicholasboari@gmail.com
  • firstName: Nicholas
  • lastName: Boari
  • username: nicholasboari
  • password: 123
  • role: ADMIN

  • Acesse a URL: localhost:8090/api/v1/auth/login
  • Realize a requisição através do método GET no formato JSON
{
    "email": "nicholasboari@gmail.com",
    "password": "123"
}
  • Exemplo de retorno:
{
    "token": eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwiaXNBY3RpdmUiOnRydWUsInN1YiI6Im5pY2hvbGFzYm9hcmkiLCJpYXQiOjE3MDA2ODEwNTEsImV4cCI6MTcwMTU0NTA1MX0.8edCSh1DGRr3DN7cE5ciZBtV0IG8spjqHgPKMOUdc48
}

Requisição de cadastro de um novo usuário

  • Acesse a URL: localhost:8090/api/v1/users
  • A requisição dos dados é via POST no formato JSON
{
    "email": "joaozinho@gmail.com",
    "password": "123",
    "username": "joao",
    "phone": "12992220086",
    "firstName": "Joao",
    "lastName": "Silva"
}

Requisição de dados do usuário autenticado

  • Acesse a URL: localhost:8090/api/v1/users
  • Para obter os dados do usuário autenticado é necessário passar o token obtido no login e inseri-lo no Bearer Token da requsição
  • A requisição dos dados é via GET
  • Exemplo de retorno

Alt text

Requisição de criação de um endereço do usuário

  • Acesse a URL: localhost:8090/api/v1/addresses
  • Para criar endereço do usuário autenticado é necessário passar o token obtido no login e inseri-lo no Bearer Token da requsição
  • A criação do endereço é via POST e no formato JSON
{
    "cep": "12040-000",
    "country": "Brasil",
    "state": "SP",
    "street": "Rua joaozinho",
    "neighborhood": "Alphaville"
}

Requisição de criação de um produto

  • Acesse a URL: localhost:8090/api/v1/products
  • Para criar um produto o usuário autenticado é necessário uma role (permissão) de "ADMIN" ou "MANAGER"
  • A criação do endereço é via POST e no formato JSON
{
    "name": "Celular Xiaomi",
    "price": 1299.00,
    "brand": {
        "id": 1
    },
    "category": {
        "id": 1
    }
}
  • Exemplo de retorno

Alt text

Requisição de criação de uma order

  • Acesse a URL: localhost:8090/api/v1/orders
  • Para criar uma order o usuário autenticado é ncessário ter um endereço associado e do token obtido no login
  • A criação do endereço é via POST e no formato JSON
{
    "products": [
        {
            "id": 1
        }
    ]
}
  • Exemplo de retorno

Alt text

Requisição do histórico de orders de um usuário

  • Acesse a URL: localhost:8090/api/v1/orders

  • Para obter o histórico de orders do usuário autenticado é necessário ter um endereço associado e do token obtido no login

  • A criação do endereço é via GET

  • Exemplo de retorno

Alt text

Autor

Nome do Autor: Nicholas Boari

Contato:

About

API de um e-commerce de produtos em geral com Spring Boot 3, Docker, AWS, etc

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published