Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
sio2:webservices [2025/01/13 09:15] – [Webservice et API] dthevenot | sio2:webservices [2025/01/20 11:33] (Version actuelle) – [Mise en pratique1 : Utilisation d'un web service REST gratuit pour obtenir la parité entre 2 monnaies] dthevenot | ||
---|---|---|---|
Ligne 90: | Ligne 90: | ||
* Limites : De nombreuses API imposent des limites d’utilisation, | * Limites : De nombreuses API imposent des limites d’utilisation, | ||
===== ===== | ===== ===== | ||
- | < | + | < |
===== Mise en pratique1 : Utilisation d'un web service REST gratuit pour obtenir la parité entre 2 monnaies ===== | ===== Mise en pratique1 : Utilisation d'un web service REST gratuit pour obtenir la parité entre 2 monnaies ===== | ||
On souhaite créer une interface permettant d' | On souhaite créer une interface permettant d' | ||
+ | |||
+ | {{: | ||
L' | L' | ||
Ligne 106: | Ligne 108: | ||
Le contrôle graphique correspondant à la parité ne doit pas être accessible. | Le contrôle graphique correspondant à la parité ne doit pas être accessible. | ||
* 2. Tester l' | * 2. Tester l' | ||
- | * 3. Écrire le script // | + | * 3. Écrire le script // |
< | < | ||
$url = ' | $url = ' | ||
Ligne 116: | Ligne 118: | ||
===== Mise en pratique2 : Utilisation d'un web service pour obtenir la liste des villes correspondant à un code postal donné ===== | ===== Mise en pratique2 : Utilisation d'un web service pour obtenir la liste des villes correspondant à un code postal donné ===== | ||
- | * 1. Test du service web : https:// | + | * 1. Test du service web : https:// |
- | * 2. Faire l' | + | * 2. Faire l' |
- | * 3. Écrire le script **accesServiceWeb.inc.php** qui récupère le code postal saisi, fait appel au service | + | * 3. Écrire le script **accesServiceWeb.inc.php** qui récupère le code postal saisi, fait appel au service |
- | * 4. Modifier **index.php**, | + | * 4. Modifier **index.php**, |
- | ===== Mise en pratique3 : Une première API avec LARAVEL ===== | ||
- | Ce projet sert à découvrir l' | ||
- | ==== Prérequis : ==== | ||
- | - Laravel installé | ||
- | - Composer installé | ||
- | - PHP et MySQL (ou un autre SGBD) configurés | ||
- | |||
- | ==== Etape 1. Créer un nouveau projet Laravel ==== | ||
- | |||
- | Le projet se nomme **api-articles** | ||
- | |||
- | ==== Etape 2. Configurer la base de données ==== | ||
- | Créer la base de données et l' | ||
- | |||
- | Ouvrez le fichier .env et configurez les paramètres de votre base de données, notamment : | ||
- | |||
- | DB_DATABASE=bdarticles | ||
- | |||
- | DB_USERNAME=admintest | ||
- | |||
- | DB_PASSWORD=mdptest | ||
- | |||
- | ==== Etape 3. Créer la migration et le modèle Article ==== | ||
- | Laravel fournit une commande pour créer une migration et un modèle en même temps : | ||
- | < | ||
- | php artisan make:model Article -m | ||
- | </ | ||
- | Cela va générer un **modèle Article** et une **migration** pour la table associée. Modifiez la migration dans database/ | ||
- | |||
- | < | ||
- | public function up() | ||
- | { | ||
- | Schema:: | ||
- | $table-> | ||
- | $table-> | ||
- | $table-> | ||
- | $table-> | ||
- | }); | ||
- | } | ||
- | </ | ||
- | Ensuite, exécutez la migration. | ||
- | |||
- | ==== Etape 4. Créer un contrôleur API ==== | ||
- | Vous pouvez maintenant créer un contrôleur pour gérer les articles via l'API : | ||
- | < | ||
- | php artisan make: | ||
- | </ | ||
- | Cela créera un contrôleur dans app/ | ||
- | < | ||
- | <?php | ||
- | |||
- | namespace App\Http\Controllers\Api; | ||
- | |||
- | use App\Http\Controllers\Controller; | ||
- | use App\Models\Article; | ||
- | use Illuminate\Http\Request; | ||
- | |||
- | class ArticleController extends Controller | ||
- | { | ||
- | public function index() | ||
- | { | ||
- | return Article:: | ||
- | } | ||
- | |||
- | public function store(Request $request) | ||
- | { | ||
- | $validated = $request-> | ||
- | ' | ||
- | ' | ||
- | ]); | ||
- | |||
- | $article = Article:: | ||
- | return response()-> | ||
- | } | ||
- | |||
- | public function show($id) | ||
- | { | ||
- | return Article:: | ||
- | } | ||
- | |||
- | public function update(Request $request, $id) | ||
- | { | ||
- | $validated = $request-> | ||
- | ' | ||
- | ' | ||
- | ]); | ||
- | |||
- | $article = Article:: | ||
- | $article-> | ||
- | return response()-> | ||
- | } | ||
- | |||
- | public function destroy($id) | ||
- | { | ||
- | $article = Article:: | ||
- | $article-> | ||
- | return response()-> | ||
- | } | ||
- | } | ||
- | </ | ||
- | ==== Etape 5. Définir les routes de l'API ==== | ||
- | Dans le fichier routes/ | ||
- | < | ||
- | use App\Http\Controllers\Api\ArticleController; | ||
- | |||
- | Route:: | ||
- | Route:: | ||
- | Route:: | ||
- | Route:: | ||
- | Route:: | ||
- | </ | ||
- | ==== Etape 6. Tester l'API ==== | ||
- | |||
- | Une fois votre application lancée, vous pouvez tester votre API avec un outil comme **curl**(outil de transfert de données en ligne de commandes et terminal pour Linux ou Windows. C'est une commande pratique notamment pour télécharger des fichiers, interroger un serveur WEB) | ||
- | |||
- | Exemple de requêtes API : | ||
- | * GET / | ||
- | * POST / | ||
- | < | ||
- | { | ||
- | " | ||
- | " | ||
- | } | ||
- | </ | ||
- | * GET / | ||
- | * PUT / | ||
- | * DELETE / | ||
- | |||
- | ==== Etape 7, Utiliser l'API : Utilisation de cette api avec une application php ==== | ||
- | L' | ||
- | * index.php : liste des articles et possibilité de créer, modifier, supprimer un article | ||
- | * create.php | ||
- | * delete.php | ||
- | * update.php | ||
- | Nous utiliserons CURL pour effectuer les appels HTTP. | ||
- | |||
- | |||
- | ==== Conclusion ==== | ||
- | |||
- | Avec ce projet, vous avez appris à créer une API REST dans Laravel, à configurer les routes, à valider les données et à manipuler des modèles pour effectuer des opérations CRUD. | ||
- | |||
- | //===== Mise en pratique4(facultatif) : Utilisation d'un web service REST gratuit pour obtenir la météo. ===== | ||
- | On souhaite afficher la météo sur un site web. Trouver un webservice à utiliser. | ||
- | Proposer une interface// | ||
- |