Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Projeto realizado com o propósito de aplicar os princípios de POO(Programação Orientada a Objetos) para a construção de uma API REST com CRUD. Essa API simula o back-end de um software de gestão de uma concessionária de veículos.

NotificationsYou must be signed in to change notification settings

JoussemarBorges/Car_shop_Joussemar

Repository files navigation

Projeto realizado com o propósito de aplicar os princípios de POO(Programação Orientada a Objetos) para a construção de uma API REST com CRUD. Essa API simula o back-end de um software de gestão de uma concessionária de veículos. Nela é possível realizar o cadastro de um novo veículo, buscar todos os veículos cadastrados, buscar um veículo específico pelo Id, atualizar o cadsatro ou deletar um veículo específico pelo Id.Foi utilizado o banco de dados MongoDB e a estrutura do projeto foi organizada com a arquitetura de software em três camadas básicas sendo a Controller, Service e Model(configuradas com o ODM Mongoose).Além do desenvolvimento da API, foi aplicado o conceito de testes unitários, onde foi possível ter uma cobertura de 100% de testes de todas as camadas da aplicação.Me ogrulho muito desse projeto por ter conseguido aplicar com clareza os conceitos descritos aqui.

Orientações

🐳Para rodar o projeto localmente utilizando o docker:
1. Clone o repositório    - Use o comando: `git clone https://github.com/JoussemarBorges/Car_shop_Joussemar`.    - Entre na pasta do repositório que você acabou de clonar:    - `cd sd-024-a-project-car-shop`2. Instale as dependências:    - `npm install`3. Certifique-se de ter o docker instalado na versão 1.29 ou superior. Você pode verificar como instalar o docker na documentação: https://docs.docker.com/compose/install/.4. O arquivo docker-compose.yml contém as configurações necessárias para rodar os serviços "app-car-shop" - que irá rodar o node - e "mongodb" que irá rodar o mongodb.    - Já esxiste um arquivo Dokcerfile na raiz do projeto com as configurações necessárias para montar a imagem do node.5. Para subir os containers, conforme as configurações acima, rode o comando:    - docker-compose up - d    - Esse comando fará a montagem dos container em segundo plano(-d)    - A partir daqui já é possível rodar o container car_shop via CLI ou abri-lo no VS Code.    - Caso deseje usar o terminal interativo do container criado pelo compose, utilize o comando docker exec -it car_shop bash

Documentação da API

Há duas coleções no Data Base car_shop_db. As regras das requisições se aplicam para ambas as coleções, com pequenas diferenças que serão exemplificadas.

Cadastra um veículo na coleção correspondente (cars ou motorcycles) do DB:
POST /cars/POST /motorcycle/
ParâmetroTipoDescrição
bodyobjectObrigatório. Propriedades e valores para atualização
- O body da requisição deve seguir o padrão conforme exemplo abaixo:    Car:    {         "model": "Marea",        "year": 1992,        "color": "Red",        "status": true, **O único campo opcional**        "buyValue": 12.000,        "doorsQty": 2,        "seatsQty": 5    }    Motorcycle:    {        "model": "Honda Cb 600f Hornet",        "year": 2005,        "color": "Yellow",        "status": true,        "buyValue": 30.000,        "category": "Street",        "engineCapacity": 600    }- Retorna o status 201 caso seja possível cadastrar um veículo com sucesso!- Retorna um json com os dados cadastrados no DB:    Car:    {        "id": "6348513f34c397abcad040b2",        "model": "Marea",        "year": 2002,        "color": "Black",        "status": true,        "buyValue": 15.990,        "doorsQty": 4,        "seatsQty": 5    }    Motorcylce:    {        "id": "6348513f34c397abcad040b2",        "model": "Honda Cb 600f Hornet",        "year": 2005,        "color": "Yellow",        "status": true,        "buyValue": 30.000,        "category": "Street",        "engineCapacity": 600    }
Retorna todos os veículos cadastrados no DB:
GET /cars/GET /motorcycle/
ParâmetroTipoDescrição
-- --
- Em caso de Sucesso retornará  ostatus 200 com a seguinte estrutura:        Cars:    [{        "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    }]    Motorcycles:    [{        "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    }]
Retorna um veículo de um Id específico:
GET /cars/${id}GET /motorcycle/${id}
ParâmetroTipoDescrição
idstringObrigatório. O ID do veículo a ser consultado
- Em caso de sucesso retornará o status 200 e os dados do veículo referente ao id pesquisado:    Car:    {        "id": "634852326b35b59438fbea2f",        "model": "Marea",        "year": 2002,        "color": "Black",        "status": true,        "buyValue": 15.99,        "doorsQty": 4,        "seatsQty": 5    }    Motorcycle:    {        "id": "634852326b35b59438fbea31",        "model": "Honda Cbr 1000rr",        "year": 2011,        "color": "Orange",        "status": true,        "buyValue": 59.900,        "category": "Street",        "engineCapacity": 1000    }    - Retornará o status 422 e um json com a mensagem de erro, caso o id fornecido não esteja no formato correto (default gerado pelo Mongo DB) :     { "message": "Invalid mongo id" }- Retornará o status 404 e um json com a mensagem de erro, caso o veículo não tenha sido cadastrado:    Car: { "message": "Car not found" }    Motorcycle: { "message": "Motorcycle not found" }
Atualiza um veículo com um Id específico:
PUT /cars/${id}PUT /motorcycle/${id}
ParâmetroTipoDescrição
idstringObrigatório. O ID do veículo a ser atualizado
bodyobjectObrigatório. Propriedades e valores para atualização
- O body da requisição deve seguir o padrão conforme exemplo abaixo:        Car:    {         "model": "Marea",        "year": 1992,        "color": "Red",        "status": true, **O único campo opcional**        "buyValue": 12.000,        "doorsQty": 2,        "seatsQty": 5    }    Motorcycle:    {        "model": "Honda Cb 600f Hornet",        "year": 2014,        "color": "Red",        "status": true,        "buyValue": 45.000,        "category": "Street",        "engineCapacity": 600    }- Serão feitas as mesmas validações de formato de Id e de Id cadastrado conforme descrito na documentação de retorno de Id específico;- Será retornado os daso atualizados do veículo conforme exemplo abaixo:    Car:    {        "id": "634852326b35b59438fbea2f",        "model": "Marea",        "year": 1992,        "color": "Red",        "status": true,        "buyValue": 12.000,        "doorsQty": 2,        "seatsQty": 5    }    MOtorcycle:    {        "id": "634852326b35b59438fbea2f",        "model": "Honda Cb 600f Hornet",        "year": 2014,        "color": "Red",        "status": true,        "buyValue": 45.000,        "category": "Street",        "engineCapacity": 600    }- Retornará o status 422 e um json com a mensagem de erro, caso o id fornecido não esteja no formato correto (default gerado pelo Mongo DB) :     { "message": "Invalid mongo id" }- Retornará o status 404 e um json com a mensagem de erro, caso o veículo não tenha sido cadastrado:    Car: { "message": "Car not found" }    Motorcycle: { "message": "Motorcycle not found" }
Excluí um veículo de um Id específico:
DELETE /cars/${id}DELETE /motorcycles/${id}
ParâmetroTipoDescrição
idstringObrigatório. O ID do veículo a ser deletado
- Será retornar o status 204 sem o Json caso o veículo sejá excluído com sucesso.- Retornará o status 422 e um json com a mensagem de erro, caso o id fornecido não esteja no formato correto (default gerado pelo Mongo DB) :     { "message": "Invalid mongo id" }- Retornará o status 404 e um json com a mensagem de erro, caso o veículo não tenha sido cadastrado:    Car: { "message": "Car not found" }    Motorcycle: { "message": "Motorcycle not found" }

Tecnologias utilizadas:

TypeScriptNodeJSMochaGitMongoDBDockerExpress.js

About

Projeto realizado com o propósito de aplicar os princípios de POO(Programação Orientada a Objetos) para a construção de uma API REST com CRUD. Essa API simula o back-end de um software de gestão de uma concessionária de veículos.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors2

  •  
  •  

[8]ページ先頭

©2009-2025 Movatter.jp