# 🚀 Guide rapide API - DĂ©marrage en 5 minutes ## 1ïžâƒŁ CrĂ©er une clĂ© API ### Via ligne de commande ```bash php bin/console app:api-key:create votre_pseudo "Nom de votre application" ``` **Exemple:** ```bash php bin/console app:api-key:create john "Mon App Mobile" ``` Vous recevrez un **token unique** - conservez-le en lieu sĂ»r! ### Via l'API (pour utilisateurs connectĂ©s) ```bash curl -X POST http://localhost:8000/api/api-keys \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name": "Nom de votre clĂ©"}' ``` --- ## 2ïžâƒŁ AccĂ©der Ă  l'API ### Option A: Avec une clĂ© API (recommandĂ© pour applications externes) ```bash curl -X GET http://localhost:8000/api/profile \ -H "Authorization: Bearer your_api_token_here" ``` **Exemple de rĂ©ponse:** ```json { "id": 1, "pseudo": "john", "roles": ["ROLE_USER"], "authenticatedVia": "api_key" } ``` ### Option B: Via session (pour utilisateurs connectĂ©s au site) ```bash # AprĂšs connexion au site web curl http://localhost:8000/api/profile ``` La session est automatiquement utilisĂ©e. --- ## 3ïžâƒŁ Endpoints disponibles | MĂ©thode | Route | Authentification | Description | |---------|-------|------------------|-------------| | `GET` | `/api/health` | ❌ Non | VĂ©rifier l'Ă©tat de l'API | | `GET` | `/api/profile` | ✅ Oui | Votre profil utilisateur | | `GET` | `/api/api-keys` | ✅ Oui | Vos clĂ©s API / toutes (admin) | | `POST` | `/api/api-keys` | ✅ Oui | CrĂ©er une nouvelle clĂ© | | `DELETE` | `/api/api-keys/{id}` | ✅ Oui | Supprimer une clĂ© | | `PATCH` | `/api/api-keys/{id}/deactivate` | ✅ Oui | DĂ©sactiver une clĂ© | --- ## 4ïžâƒŁ Exemples pratiques ### VĂ©rifier l'Ă©tat de l'API ```bash curl http://localhost:8000/api/health ``` ### RĂ©cupĂ©rer votre profil ```bash curl -X GET http://localhost:8000/api/profile \ -H "Authorization: Bearer your_token" ``` ### Lister vos clĂ©s API ```bash curl -X GET http://localhost:8000/api/api-keys \ -H "Authorization: Bearer your_token" ``` ### CrĂ©er une nouvelle clĂ© ```bash curl -X POST http://localhost:8000/api/api-keys \ -H "Authorization: Bearer your_token" \ -H "Content-Type: application/json" \ -d '{"name": "Nouvelle clĂ©", "expiresAt": "2027-04-03T00:00:00Z"}' ``` ### Supprimer une clĂ© ```bash curl -X DELETE http://localhost:8000/api/api-keys/1 \ -H "Authorization: Bearer your_token" ``` --- ## 5ïžâƒŁ Utilisation dans votre application ### JavaScript / Fetch ```javascript const apiToken = 'your_api_token'; async function getProfile() { const response = await fetch('http://localhost:8000/api/profile', { headers: { 'Authorization': `Bearer ${apiToken}` } }); if (!response.ok) { throw new Error(`Erreur: ${response.status}`); } return response.json(); } getProfile().then(profile => console.log(profile)); ``` ### Python / Requests ```python import requests api_token = 'your_api_token' headers = {'Authorization': f'Bearer {api_token}'} response = requests.get('http://localhost:8000/api/profile', headers=headers) response.raise_for_status() print(response.json()) ``` ### PHP / cURL ```php $token = 'your_api_token'; $url = 'http://localhost:8000/api/profile'; $options = [ 'http' => [ 'method' => 'GET', 'header' => "Authorization: Bearer $token" ] ]; $context = stream_context_create($options); $response = file_get_contents($url, false, $context); $data = json_decode($response, true); print_r($data); ``` --- ## 6ïžâƒŁ Gestion des erreurs courants ### 401 Unauthorized - **Cause**: Token invalide ou expirĂ©, pas d'authentification - **Solution**: VĂ©rifier votre token, le renouveler si nĂ©cessaire ### 403 Forbidden - **Cause**: AuthentifiĂ© mais permissions insuffisantes - **Solution**: VĂ©rifier que vous avez les droits nĂ©cessaires ### 404 Not Found - **Cause**: Ressource inexistante (ex: clĂ© API inexistante) - **Solution**: VĂ©rifier l'ID de la ressource --- ## 7ïžâƒŁ SĂ©curitĂ© ✅ **À FAIRE:** - Garder votre token secret - Utiliser HTTPS en production - CrĂ©er de nouvelles clĂ©s rĂ©guliĂšrement - RĂ©voquer les clĂ©s inutilisĂ©es ❌ **À NE PAS FAIRE:** - Partager votre token - Mettre votre token en version control (git) - Utiliser le mĂȘme token pour tout - Ignorer les expirations --- ## 🆘 Besoin d'aide? Consultez la **documentation complĂšte** dans `DOCUMENTATION_API.md` pour: - Architecture dĂ©taillĂ©e - Configuration avancĂ©e - IntĂ©gration dans diffĂ©rents frameworks - FAQ et dĂ©pannage --- **PrĂȘt Ă  utiliser l'API!** 🎉