Skip to content

Este projeto consiste em uma API RESTful desenvolvida com Node.js, Express.js e MongoDB, que permite o cadastro e listagem de veículos (carros e motocicletas)

Notifications You must be signed in to change notification settings

pedroygor/car-shop

Repository files navigation

Car Shop

Este projeto consiste em uma API RESTful desenvolvida com Node.js, Express.js e MongoDB, que permite o cadastro e listagem de veículos (carros e motocicletas)

Funcionalidades

  • Retorna uma lista de todos os carros registrados.
  • Retorna o carro com o ID especificado.
  • Cria um novo carro com os dados fornecidos.
  • Atualiza o carro com o ID especificado com os dados fornecidos.
  • Deleta um carro com o ID especificado
  • Retorna uma lista de todas as motocicletas registradas.
  • Cria uma nova motocicleta com os dados fornecidos.
  • Retorna uma motocicleta com o ID especificado.
  • Atualiza uma motocicleta com o ID especificado com os dados fornecidos.
  • Deleta uma motocicleta com o ID especificado

Pré-requisitos

Para executar este projeto, é necessário ter o Node.js e o MongoDB instalados.

Instalação

# Clonar Projeto
$ git clone https://github.com/pedroygor/car-shop.git

# Entrar no diretório
cd car-shop

# Instalar dependências
$ npm install

# Subir o docker
$ docker-compose up -d

# Visualizar terminal
$ docker exec -it car_shop bash 

Testes

O projeto conta com testes unitários que cobrem pelo menos 80% da camada Service.

Documentação API

🚗 Carros

Cadastrar carro

POST /cars
Parâmetro Tipo Descrição
model
year
color
status
buyValue
doorsQty
seatsQty
string
number
string
boolean
number
number
number
Atenção: o campo status não é obrigatório
Exemplo de estrutura do body
{
  "model": "Marea",
  "year": 2002,
  "color": "Black",
  "status": true,
  "buyValue": 15.990,
  "doorsQty": 4,
  "seatsQty": 5
}
A resposta com status 201
  {
    "id": "6348513f34c397abcad040b2",
    "model": "Marea",
    "year": 2002,
    "color": "Black",
    "status": true,
    "buyValue": 15.990,
    "doorsQty": 4,
    "seatsQty": 5
  }

Listas carros

GET /cars
Resposta com status 200
  [
    {
      "id": "634852326b35b59438fbea2f",
      "model": "Marea",
      "year": 2002,
      "color": "Black",
      "status": true,
      "buyValue": 15.99,
      "doorsQty": 4,
      "seatsQty": 5
    },
    {
      "id": "634852326b35b59438fbea31",
      "model": "Tempra",
      "year": 1995,
      "color": "Black",
      "buyValue": 39,
      "doorsQty": 2,
      "seatsQty": 5
    }
  ]

Listar carro por ID

GET /cars/:id
Resposta com status 200
  {
  "id": "634852326b35b59438fbea2f",
  "model": "Marea",
  "year": 2002,
  "color": "Black",
  "status": true,
  "buyValue": 15.99,
  "doorsQty": 4,
  "seatsQty": 5
}
Casos de falha
  • Ao tentar passar um ID inexistente no banco de dados - Status Code 404
{ "message": "Car not found" }
  • Ao passar um ID inválido - Status Code 422
{ "message": "Invalid mongo id" }

Atualizar carro por ID

PUT /cars/:id
Exemplo de estrutura do body
{
  "model": "Marea",
  "year": 1992,
  "color": "Red",
  "status": true,
  "buyValue": 12.000,
  "doorsQty": 2,
  "seatsQty": 5
}
Resposta com status 200
{
  "id": "634852326b35b59438fbea2f",
  "model": "Marea",
  "year": 1992,
  "color": "Red",
  "status": true,
  "buyValue": 12.000,
  "doorsQty": 2,
  "seatsQty": 5
}
Casos de falha
  • Ao tentar passar um ID inexistente no banco de dados - Status Code 404
{ "message": "Car not found" }
  • Ao passar um ID inválido - Status Code 422
{ "message": "Invalid mongo id" }

Deletar carro por ID

DELETE /cars/:id
Resposta com status 204
{}
Resposta com status 404
{
  "message": "Car not found"
}

🏍️ Motocicletas

Cadastrar motocicletas

POST /motorcycles
Parâmetro Tipo Descrição
model
year
color
status
buyValue
category
engineCapacity
string
number
string
boolean
number
string
number
Atenção: o campo status não é obrigatório
Exemplo de estrutura do body
{
  "model": "Honda Cb 600f Hornet",
  "year": 2005,
  "color": "Yellow",
  "status": true,
  "buyValue": 30.000,
  "category": "Street",
  "engineCapacity": 600
}
A resposta com status 201
{
  "id": "6348513f34c397abcad040b2",
  "model": "Honda Cb 600f Hornet",
  "year": 2005,
  "color": "Yellow",
  "status": true,
  "buyValue": 30.000,
  "category": "Street",
  "engineCapacity": 600
}

Listas motocicletas

GET /motorcycles
Resposta com status 200
[
  {
    "id": "634852326b35b59438fbea2f",
    "model": "Honda Cb 600f Hornet",
    "year": 2005,
    "color": "Yellow",
    "status": true,
    "buyValue": 30.000,
    "category": "Street",
    "engineCapacity": 600
  },
  {
    "id": "634852326b35b59438fbea31",
    "model": "Honda Cbr 1000rr",
    "year": 2011,
    "color": "Orange",
    "status": true,
    "buyValue": 59.900,
    "category": "Street",
    "engineCapacity": 1000
  }
]

Listar motocicleta por ID

GET /motorcycles/:id
Resposta com status 200
{
  "id": "634852326b35b59438fbea31",
  "model": "Honda Cbr 1000rr",
  "year": 2011,
  "color": "Orange",
  "status": true,
  "buyValue": 59.900,
  "category": "Street",
  "engineCapacity": 1000
}
Casos de falha
  • Ao tentar passar um ID inexistente no banco de dados - Status Code 404
{ "message": "Motorcycle not found" }
  • Ao passar um ID inválido - Status Code 422
{ "message": "Invalid mongo id" }

Atualizar motocicleta por ID

PUT /motorcycles/:id
Exemplo de estrutura do body
{
  "model": "Honda Cb 600f Hornet",
  "year": 2014,
  "color": "Red",
  "status": true,
  "buyValue": 45.000,
  "category": "Street",
  "engineCapacity": 600
}
Resposta com status 200
{
  "id": "634852326b35b59438fbea2f",
  "model": "Honda Cb 600f Hornet",
  "year": 2014,
  "color": "Red",
  "status": true,
  "buyValue": 45.000,
  "category": "Street",
  "engineCapacity": 600
}
Casos de falha
  • Ao tentar passar um ID inexistente no banco de dados - Status Code 404
{ "message": "Motorcycle not found" }
  • Ao passar um ID inválido - Status Code 422
{ "message": "Invalid mongo id" }

Deletar motocicleta por ID

DELETE /motorcycles/:id
Resposta com status 204
{}
Resposta com status 404
{
  "message": "Motorcycle not found"
}

Autor

@pedroygor

About

Este projeto consiste em uma API RESTful desenvolvida com Node.js, Express.js e MongoDB, que permite o cadastro e listagem de veículos (carros e motocicletas)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published