manoelVLima / API-car-shop

API de gerenciamento de uma concessionária de carros utilizando Typescript,MongoDB e Mongoose.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Car Shop API

Aplicação desenvolvida durante o módulo de Back-end do curso de Desenvolvimento Web da Trybe. Consiste na criação de uma API de gerenciamento de uma concessionária de veículos.

Tecnologias e ferramentas

  • NodeJS
  • Express
  • Typescript
  • MongoDB
  • Mongoose
  • Chai
  • Mocha
  • Sinon
  • Docker

Rodando o projeto localmente

Clone o projeto utilizando o comando: git clone https://github.com/manoelVLima/car-shop-api.git

Acesse a pasta do projeto e rode o romando: npm install para instalar as dependências do projeto.

Rode o comando npm run dev em seguida para iniciar o servidor localmente. E a partir disso você precisará de um software para testar as rotas da API como por exemplo o Postman ou Insonmia, em caso de estar usando o Visual Code, você pode testar através da extensão ThunderClient.

Será necessário configurar o banco de dados MongoDB através do arquivo .env contigo no projeto. Caso opte por rodar através do docker, ao abrir o projeto rode o comando docker-compose up -d e rode o servidor dentro do container

Rotas

  • POST /cars

    Rota responsável pela adição de um novo carro ao banco de dados. Recebe como corpo da requisição o seguinte JSON:

    {
      "model": "Marea",
      "year": 2002,
      "color": "Black",
      "status": true,
      "buyValue": 15.990,
      "doorsQty": 4,
      "seatsQty": 5
    }

    Se a resposta for um sucesso, será retornado o seguinte JSON:

    {
      "id": "63ead3f079303cdd3fca52b5",
      "model": "Marea",
      "year": 2002,
      "color": "Black",
      "status": true,
      "buyValue": 15.990,
      "doorsQty": 4,
      "seatsQty": 5
    }

  • POST /motorcycles

    Rota responsável pela adição de uma nova motocicleta ao banco de dados. Recebe como corpo da requisição o seguinte JSON:

    {
      "model": "Honda Cb 600f Hornet",
      "year": 2005,
      "color": "Yellow",
      "status": true,
      "buyValue": 30.000,
      "category": "Street",
      "engineCapacity": 600
    }

    Se a resposta for um sucesso, o servidor irá retornar o seguinte objeto JSON:

      {
        "id": "63eadef2225ffff17972f1ba",
        "model": "Honda Cb 600f Hornet",
        "year": 2005,
        "color": "Yellow",
        "status": true,
        "buyValue": 30,
        "category": "Street",
        "engineCapacity": 600
      }

  • GET /cars

    Rota responsável pelo retorno de todos os carros do banco de dados

    Se a resposta for um sucesso, o servidor irá retornar o seguinte objeto JSON contendo todos os carros em formato de array:

      [
        {
          "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
        }
      ]

  • GET /motorcycles

    Rota responsável pelo retorno de todos as motocicletas do banco de dados

    Se a resposta for um sucesso, o servidor irá retornar o seguinte objeto JSON contendo todos as motocicletas em formato de array:

      [
        {
          "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
        }
      ]

  • GET /cars/:id

    Rota responsável pelo busca de um carro pelo seu Id.

    Se a resposta for um sucesso, o servidor irá retornar o seguinte objeto JSON contendo as informações do carro que foi buscado.

      {
        "id": "634852326b35b59438fbea2f",
        "model": "Marea",
        "year": 2002,
        "color": "Black",
        "status": true,
        "buyValue": 15.99,
        "doorsQty": 4,
        "seatsQty": 5
      }

  • GET /motorcycles/:id

    Rota responsável pelo busca de uma motocicleta pelo seu Id.

    Se a resposta for um sucesso, o servidor irá retornar o seguinte objeto JSON contendo as informações da motocicleta que foi buscada.

      {
        "id": "634852326b35b59438fbea2f",
        "model": "Honda Cb 600f Hornet",
        "year": 2005,
        "color": "Yellow",
        "status": true,
        "buyValue": 30.000,
        "category": "Street",
        "engineCapacity": 600
      }

  • PUT /cars/:id

    Rota responsável pela edição/alteração de algum carro do banco de dados.

    O corpo da requisição deverá vim no seguinte formato:

      {
        "model": "Marea",
        "year": 1992,
        "color": "Red",
        "status": true,
        "buyValue": 12.000,
        "doorsQty": 2,
        "seatsQty": 5
      }

    Se o retorno for um sucesso, o servidor trará um objeto JSON contendo as informações atualizadas do carro.

    {
      "id": "634852326b35b59438fbea2f",
      "model": "Marea",
      "year": 1992,
      "color": "Red",
      "status": true,
      "buyValue": 12.000,
      "doorsQty": 2,
      "seatsQty": 5
    }

  • PUT /motorcycles/:id

    Rota responsável pela edição/alteração de alguma motocicleta do banco de dados.

    O corpo da requisição deverá vim no seguinte formato:

    {
     "model": "Honda Cb 600f Hornet",
     "year": 2014,
     "color": "Red",
     "status": true,
     "buyValue": 45.000,
     "category": "Street",
     "engineCapacity": 600
    }

    Se o retorno for um sucesso, o servidor trará um objeto JSON contendo as informações atualizadas da motocicleta.

    {
      "id": "634852326b35b59438fbea2f",
      "model": "Honda Cb 600f Hornet",
      "year": 2014,
      "color": "Red",
      "status": true,
      "buyValue": 45.000,
      "category": "Street",
      "engineCapacity": 600
    }

Projeto desenvolvido por Manoel Vieira Lima Junior.

About

API de gerenciamento de uma concessionária de carros utilizando Typescript,MongoDB e Mongoose.


Languages

Language:TypeScript 95.0%Language:JavaScript 3.8%Language:Dockerfile 0.8%Language:Shell 0.3%