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
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.
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
- Framework: https://github.com/GustavoSachetto/Php-puro/tree/v1
- Postman: https://documenter.getpostman.com/view/31981241/2sA3kaCK5V
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
etransmission
.
Todas as tabelas e alterações no banco estão acima no projeto, na pasta "database".
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
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
}