Skip to content

andreriffen/api-veiculos2

Repository files navigation

SUMÁRIO: API Veículos 2 - O Ataque dos Clones

Porque literalmente esse projeto é um clone de API Veículos 1 - Mão na Massa 1

"AAAAARRRRGGGHHHH WRRHWRWWHW HUURH!"Chewbacca 👹

Java 17+ Spring Boot 3.4.0 Maven 3.6+ Alpine Linux Codespaces Ready

    🔴 🟩🟩    __/\\\\\\\\\\\___/\\\\\\\\\\\\\\\_____/\\\\\\\\\\\__________/\\\\\\\\\_        
    🟩 🟩        _\/////\\\///___\/\\\///////////____/\\\/////////\\\_____/\\\////////__       
    🟩 🟩🟩      _____\/\\\______\/\\\______________\//\\\______\///____/\\\/___________      
    🟩 🟩          _____\/\\\______\/\\\\\\\\\\\_______\////\\\__________/\\\_____________     
                     _____\/\\\______\/\\\///////___________\////\\\______\/\\\_____________    
                      _____\/\\\______\/\\\_____________________\////\\\___\//\\\____________   
                        ____\/\\\______\/\\\______________/\\\______\//\\\___\///\\\__________  
                         __/\\\\\\\\\\\_\/\\\_____________\///\\\\\\\\\\\/______\////\\\\\\\\\_ 
                          _\///////////__\///________________\///////////___________\/////////__

Evolução direta do api-veiculos1. Se você precisa do passo a passo completo, diagramas e prints detalhados, consulte o projeto original. Aqui vamos direto ao que importa.

🚀 Início Rápido

😺 Codespaces Github (Recomendado)

  • Clone e abra com Codespace Code ▾Codespaces +).

  • Aguarde a tarefa 🚀 Startup API

  • Abra o terminal Bash e execute:

    ./populate-data.sh  # inserir dados com credenciais no H2
    ./test-api.sh       # testar interações CRUD POST/GET/PUT/DELETE

🔎 Se quiser acessar o terminal H2, acesse a sua URL:

> ✅ Correto: https ://nome-aletorio-123457890-8080.app.github.dev/h2-console ✅ (sem :8080 injetado)

> ❌ Errado: https ://nome-aletorio-1234567890-8080.app.github.dev:8080/h2-console ❌ (com :8080 injetado)

(JDBC jdbc:h2:mem:apiveiculos2).


Outras IDEs

NetBeans, Sublime ou VS-Code local + terminal (Windows, macOS, Linux):

  • Requisitos: JDK 17+
  • Clone o projeto, descompacte e execute:
./mvnw clean package -DskipTests        # compilar a build Maven
./mvnw spring-boot:run                  # executar o server API

Compilou? Rode isso:

./populate-data.sh      # insere dados de exemplo já com credenciais
./test-api.sh           # testar interações CRUD POST/GET/PUT/DELETE

Opcional: Experimente rodar ./startup.sh pra compilar e rodar o server da API na sequência.


🔐 Interagir direto no terminal - Como os Maias e Aztecas faziam

Clique para abrir o manual

⚠️ A API agora tem porteiro. Sem credenciais, nada feito.

  • Credenciais padrão: admin / admin123 (criados no SecurityConfig).

  • Export no shell atual (garante que curl enxergue as variáveis):

    export AUTH_USER=admin
    export AUTH_PASS=admin123
  • Modo clássicocurl -s -u "$AUTH_USER:$AUTH_PASS" http://localhost:8080/marcas

  • Modo filme dos anos 90curl -s "http://$AUTH_USER:$AUTH_PASS@localhost:8080/marcas"

  • Modo cientistacurl -s -H "Authorization: Basic $(printf '%s' "$AUTH_USER:$AUTH_PASS" | base64)" http://localhost:8080/marcas

  • Modo ninjacurl -s -u "$AUTH_USER:$AUTH_PASS" http://localhost:8080/marcas --show-error --fail

Quer deixar o terminal apresentável sem virar roteirista de shell?

  • Tem Python? roda isso aqui:
    curl -s -u "$AUTH_USER:$AUTH_PASS" http://localhost:8080/marcas | python -m json.tool
    Não tem? Instala rapidinho ➡️ https://www.python.org/downloads/
  • Quer JSON colorido?
    curl -s -u "$AUTH_USER:$AUTH_PASS" http://localhost:8080/marcas | jq '.'
    Precisa do jq: https://stedolan.github.io/jq/download/
  • Só os nomes, por favor:
    curl -s -u "$AUTH_USER:$AUTH_PASS" http://localhost:8080/marcas | jq -r '.[].nome'
  • Json bonito em modo scroll:
    curl -s -u "$AUTH_USER:$AUTH_PASS" http://localhost:8080/marcas | jq '.' | less -R
    (pressione q para sair)

Use qualquer uma antes/ao invés dos scripts populate-data.sh ou test-api.sh para entender o fluxo manualmente.


🌀 Mão na Massa 1 - Projeto Anterior


📜 Licença

Este projeto está licenciado sob a Licença MIT.


☕ Autor