Skip to content

GustavoSachetto/Api-carros

Repository files navigation

Api-carros

Maravilhado com a ideia de consumir APIs busquei criar a minha própria, trazendo como tema veículos! Utilizei nela uma arquitetura MVC usando como base a linguagem PHP.

#php #poo #api

Desenvolvendo

Para construir uma API-REST-FULL tive que estudar muitos conceitos que me trouxeram grandes experiências! Trabalhei com:

  • Programação Orientada a Objeto
  • Arquitetura Rest.
  • Configuração de rotas.
  • Requisição do cliente.
  • Resposta do servidor.
  • Codigo status HTTP.
  • Basic Authentication.
  • Token Authentication.
  • Implementação de cache.
  • Banco de dados.
  • Postman (Ferramenta de teste).
  • Formatação de arquivos JSON.

Comandos iniciais

Principais comandos para iniciar o projeto:

composer install
php cli --db set # Carrega as tabelas
php cli --db load # Carraga as informações para as tabelas

Documentação

Banco de dados

O banco de dados dessa api conta com 6 tabelas, elas são:

  • user Armazena todos os usuários de acesso privilegiado da api.
  • brand Armazena todas as marcas de veículos presente na api.
  • model Armazena todos os modelos de veículos da api, trazendo dados da tabela: brand.
  • fuel Armazena todos os combustíveis presente na api.
  • transmission Armazena todas as transmissões presente na api.
  • vehicle Armazena todos os veículos da api, trazendo dados das tabelas: model, fuel e transmission.

Todas as tabelas e alterações no banco estão acima no projeto, na pasta "database".

Principais Rotas:

Rotas do veículo (carro):

API CRUD AUTH DESCRIÇÃO
GET / READ No Auth Obtenha as informações sobre a api
GET /cars READ No Auth Obtenha as ultimas cinco postagens da vehicle tabela
GET /cars?page=2 READ No Auth Obtenha até 25 postagens por página da vehicle tabela
GET /cars/{id} READ No Auth Obtenha uma postagem pela busca por id da vehicle tabela
POST /cars CREATE JWT Auth Crie uma nova postagem da vehicle tabela
PUT /cars UPDATE JWT Auth Atualize uma postagem da vehicle tabela
DELETE /cars DELETE JWT Auth Delete uma postagem da vehicle tabela

Rotas dos usuários:

API CRUD AUTH DESCRIÇÃO
GET /users READ Basic Auth Obtenha todas postagens da user tabela
GET /users/{id} READ Basic Auth Obtenha uma postagem da user tabela
POST /users CREATE Basic Auth Crie uma nova postagem da user tabela
PUT /users/{id} UPDATE Basic Auth Atualize uma postagem da user tabela
DELETE /users/{id} DELETE Basic Auth Delete uma postagem da user tabela

Rotas das marcas do veículo:

API CRUD AUTH DESCRIÇÃO
GET /brands READ No Auth Obtenha todas postagens da brand tabela
GET /brands/{id} READ No Auth Obtenha todas postagens pela busca por id na brand tabela
POST /brands CREATE JWT Auth Crie uma nova postagem da brand tabela
PUT /brands/{id} UPDATE JWT Auth Atualize uma postagem da brand tabela
DELETE /brands/{id} DELETE JWT Auth Delete uma postagem da brand tabela

Para acessar todas as rotas da api: https://www.postman.com/api-carros-gs/workspace/api-carros-developer-workspace

Exemplo de retorno

Este é um retorno padrão da "Api-carros". Todos os veículos consultados deveram ter esse formato base.

  • Tipo de arquivo: JSON
{
    "id": 4,
    "price": 77900,
    "brand_id": 3,
    "brand_name": "Chevrolet",
    "model_id": 3,
    "model_name": "Onix Plus",
    "version": "1.4 Ltz 5p",
    "images": [
        "https://http2.mlstatic.com/D_NQ_NP_635613-MLB72695882250_112023-O.webp",
        "https://http2.mlstatic.com/D_NQ_NP_775847-MLB72769680979_112023-O.webp",
        null
    ],
    "year": {
        "production": 2019,
        "release": 2019
    },
    "fuel_name": "Gasolina e Álcool",
    "doors": 4,
    "transmission_name": "Manual",
    "motor": 1.4,
    "bodywork": "Hatch",
    "comfort": {
        "automatic_pilot": false,
        "air_conditioner": true,
        "automatic_glass": true
    },
    "entertainment": {
        "am_fm": false,
        "auxiliary_input": true,
        "bluetooth": true,
        "cd_player": true,
        "dvd_player": true,
        "mp3_reader": true,
        "usb_port": false
    },
    "deleted": false
}

Releases

No releases published

Packages

No packages published

Languages