53 lines
1.7 KiB
Plaintext
53 lines
1.7 KiB
Plaintext
/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. |