Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gustavosachetto/api-carros
Desenvolvendo uma API-REST com tema veículos, através da linguagem PHP.
https://github.com/gustavosachetto/api-carros
api-restful api-server mysql oop php8
Last synced: 9 days ago
JSON representation
Desenvolvendo uma API-REST com tema veículos, através da linguagem PHP.
- Host: GitHub
- URL: https://github.com/gustavosachetto/api-carros
- Owner: GustavoSachetto
- License: mit
- Created: 2023-12-24T17:41:55.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-01-13T23:31:47.000Z (22 days ago)
- Last Synced: 2025-01-14T00:26:18.111Z (22 days ago)
- Topics: api-restful, api-server, mysql, oop, php8
- Language: PHP
- Homepage: https://www.postman.com/api-carros-gs/api-carros-developer-workspace/overview
- Size: 210 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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
* __Link de acesso:__ https://www.postman.com/api-carros-gs/api-carros-developer-workspace/overview
## 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
* __Framework:__ https://github.com/GustavoSachetto/Php-puro/tree/v1
* __Postman:__ https://documenter.getpostman.com/view/31981241/2sA3kaCK5V## 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
}
```********************************