add initial solution (made with copilot)
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
/var/www/html/api/
|
||||
│
|
||||
├── public/
|
||||
│ └── index.php
|
||||
│
|
||||
├── src/
|
||||
│ ├── Controllers/
|
||||
│ │ ├── V1/
|
||||
│ │ │ └── UsersController.php
|
||||
│ │ └── ExampleController.php
|
||||
│ │
|
||||
│ ├── Services/
|
||||
│ │ └── ExternalApiService.php
|
||||
│ │
|
||||
│ ├── Core/
|
||||
│ │ ├── Router.php
|
||||
│ │ ├── Request.php
|
||||
│ │ ├── Response.php
|
||||
│ │ ├── Config.php
|
||||
│ │ ├── HttpClient.php
|
||||
│ │ ├── LoggerFactory.php
|
||||
│ │ └── RateLimiter/
|
||||
│ │ ├── RateLimiterInterface.php
|
||||
│ │ ├── FileRateLimiter.php
|
||||
│ │ └── InMemoryRateLimiter.php
|
||||
│ │
|
||||
│ └── Helpers/
|
||||
│ └── Json.php
|
||||
│
|
||||
├── config/
|
||||
│ ├── config.php
|
||||
│ ├── config.php.template
|
||||
│ ├── secrets.php
|
||||
│ └── secrets.php.template
|
||||
│
|
||||
├── tests/
|
||||
│ └── Unit/
|
||||
│ └── RateLimiterTest.php
|
||||
│
|
||||
├── composer.json
|
||||
└── .gitignore
|
||||
|
||||
|
||||
Piccoli accorgimenti operativi
|
||||
Permessi: la cartella di storage per il rate limiter deve essere scrivibile dall’utente Apache (www-data o apache).
|
||||
|
||||
Sicurezza: non loggare mai i segreti; filtra i campi sensibili prima di loggare.
|
||||
|
||||
Performance: file‑based va bene per carichi moderati; se il traffico cresce, sostituisci FileRateLimiter con una soluzione in memoria/distribuita.
|
||||
|
||||
Error handling: centralizza gestione eccezioni e ritorna JSON coerente con codici HTTP.
|
||||
|
||||
Versioning: quando aggiungi V2, crea src/Controllers/V2/... e registra le rotte nello stesso modo; il router selezionerà la versione corretta.
|
||||
Reference in New Issue
Block a user