sio2:webservices

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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] dthevenotsio2: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, comme un nombre maximum de requêtes par minute, jour ou mois. Certaines offrent un quota gratuit, mais au-delà, vous devrez peut-être payer.   * Limites : De nombreuses API imposent des limites d’utilisation, comme un nombre maximum de requêtes par minute, jour ou mois. Certaines offrent un quota gratuit, mais au-delà, vous devrez peut-être payer.
 =====  ===== =====  =====
-<badge>Créer un dossier webservice dans votre gitea pour stocker le travail fait ici, créer un sous-dossier par mise en pratique (dossier monnaie et dossier codepostal)</badge>+<badge>Créer un dossier webservice pour stocker le travail fait ici, créer un sous-dossier par mise en pratique (dossier monnaiedossier codepostal ...)</badge>
 ===== 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'indiquer le taux de change (la parité) d'une monnaie par rapport à une autre :  On souhaite créer une interface permettant d'indiquer le taux de change (la parité) d'une monnaie par rapport à une autre : 
 +
 +{{:promo_2025:slam:ws4parite.png?600|}}
  
 L'utilisateur choisit une monnaie d'origine, une monnaie de destination et clique sur Rechercher. Le système affiche alors la parité entre ces 2 monnaies.  L'utilisateur choisit une monnaie d'origine, une monnaie de destination et clique sur Rechercher. Le système affiche alors la parité entre ces 2 monnaies. 
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'accès au service web : http://currencies.apps.grandtrunk.net/getlatest/EUR/USD Doit afficher une valeur approchant 1.0308003133632953, qui représente la valeur d'un euro en dollar.    * 2. Tester l'accès au service web : http://currencies.apps.grandtrunk.net/getlatest/EUR/USD Doit afficher une valeur approchant 1.0308003133632953, qui représente la valeur d'un euro en dollar. 
-  * 3. Écrire le script //**accesServiceWeb.inc.php**//. Ce script sera à inclure au début de la page écrite  précédemment. Il testera si les 2 monnaies ont été transmises au serveur web. Si les 2 monnaies  sont renseignées, il fera appel à un service web pour récupérer la parité et l'affichera. L'accès au  service web pourra s'effectuer ainsi :+  * 3. Écrire le script //**accesServiceWeb.inc.php**//. Ce script sera à inclure dans la page écrite précédemment. Il testera si les 2 monnaies ont été transmises au serveur web. Si les 2 monnaies  sont renseignées, il fera appel à un service web pour récupérer la parité et l'affichera. L'accès au  service web pourra s'effectuer ainsi :
 <code> <code>
 $url = 'http://currencies.apps.grandtrunk.net/getlatest/'. $monnaieO . '/' .$monnaieD;  $url = 'http://currencies.apps.grandtrunk.net/getlatest/'. $monnaieO . '/' .$monnaieD; 
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://apicarto.ign.fr/api/codespostaux/communes/21200 , le résultat est le liste des villes correspondant au code postal 21200 au format JSON :  +  * 1. Test du service web : https://apicarto.ign.fr/api/codes-postaux/communes/21200 , le résultat est le liste des villes(il y en a 13) correspondant au code postal 21200 au format JSON {{:promo_2025:slam:ws6cpjson.png?400|}} 
-  * 2. Faire l'interface permettant la saisie du code postal et d'afficher la liste des villes dans une liste déroulante (index.php) :  +  * 2. Faire l'interface permettant la saisie du code postal et d'afficher la liste des villes dans **une liste déroulante** (index.php) :  
-  * 3. Écrire le script **accesServiceWeb.inc.php** qui récupère le code postal saisi, fait appel au service  web et constitue la liste déroulante à affichée. Consulter la documentation php de la fonction file_get_contents, notamment pour gérer le cas où  le code postal n'existe pas.  +  * 3. Écrire le script **accesServiceWeb.inc.php** qui récupère le code postal saisi, fait appel au service  web et constitue la liste déroulante à affichée. Consulter la documentation php de la fonction **file_get_contents**, notamment pour gérer le cas où le code postal n'existe pas.  
-  * 4. Modifier **index.php**, pour intégrer **accesServiceWeb.inc.php** et pour ré-afficher le code postal saisi, et afficher la liste déroulante constituée ou éventuellement un message d'erreur.  +  * 4. Modifier **index.php**, pour intégrer **accesServiceWeb.inc.php** et pour ré-afficher le code postal saisi, et afficher **la liste déroulante** constituée ou éventuellement un message d'erreur.  
  
  
-===== Mise en pratique3 : Une première API avec LARAVEL ===== 
-Ce projet sert à découvrir l'utilisation d'une API REST dans Laravel. Il consiste à créer une API permettant de gérer des articles (avec un id et une désignation) et d'effectuer des opérations CRUD (Create, Read, Update, Delete) sur ces articles. 
  
-==== 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'utilisateur avec son mot de passe. 
- 
-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 : 
-<code> 
-php artisan make:model Article -m 
-</code> 
-Cela va générer un **modèle Article** et une **migration** pour la table associée. Modifiez la migration dans database/migrations/{timestamp}_create_articles_table.php pour définir les colonnes de votre table : 
- 
-<code> 
-public function up() 
-{ 
-    Schema::create('articles', function (Blueprint $table) { 
-        $table->id(); 
-        $table->string('reference'); 
-        $table->text('designation'); 
-        $table->timestamps(); 
-    }); 
-} 
-</code> 
-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 : 
-<code> 
-php artisan make:controller Api/ArticleController --api 
-</code> 
-Cela créera un contrôleur dans app/Http/Controllers/Api/ArticleController.php. Modifiez ce fichier pour définir les **actions CRUD** : 
-<code> 
-<?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::all(); 
-    } 
- 
-    public function store(Request $request) 
-    { 
-        $validated = $request->validate([ 
-            'reference' => 'required|string|max:255', 
-            'designation' => 'required|string', 
-        ]); 
- 
-        $article = Article::create($validated); 
-        return response()->json($article, 201); 
-    } 
- 
-    public function show($id) 
-    { 
-        return Article::findOrFail($id); 
-    } 
- 
-    public function update(Request $request, $id) 
-    { 
-        $validated = $request->validate([ 
-            'reference' => 'required|string|max:255', 
-            'designation' => 'required|string', 
-        ]); 
- 
-        $article = Article::findOrFail($id); 
-        $article->update($validated); 
-        return response()->json($article, 200); 
-    } 
- 
-    public function destroy($id) 
-    { 
-        $article = Article::findOrFail($id); 
-        $article->delete(); 
-        return response()->json(null, 204); 
-    } 
-} 
-</code> 
-==== Etape 5. Définir les routes de l'API ==== 
-Dans le fichier routes/api.php, ajoutez les routes pour les actions CRUD des articles : 
-<code> 
-use App\Http\Controllers\Api\ArticleController; 
- 
-Route::get('articles', [ArticleController::class, 'index']); 
-Route::post('articles', [ArticleController::class, 'store']); 
-Route::get('articles/{id}', [ArticleController::class, 'show']); 
-Route::put('articles/{id}', [ArticleController::class, 'update']); 
-Route::delete('articles/{id}', [ArticleController::class, 'destroy']); 
-</code> 
-==== 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 /api/articles : Récupérer tous les articles 
-  * POST /api/articles : Créer un nouvel article avec le corps suivant : 
-<code> 
-{ 
-    "reference": "Premier Article", 
-    "designation": "Ceci est le contenu du premier article." 
-} 
-</code> 
-  * GET /api/articles/{id} : Récupérer un article spécifique en utilisant son ID 
-  * PUT /api/articles/{id} : Mettre à jour un article existant avec un corps similaire à celui de la création 
-  * DELETE /api/articles/{id} : Supprimer un article 
- 
-==== Etape 7, Utiliser l'API : Utilisation de cette api avec une application php ==== 
-L'application contiendra 4 fichier pour mettre en oeuvre les opérations crud : 
-  * 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// 
-  
  • sio2/webservices.1736756130.txt.gz
  • Dernière modification : 2025/01/13 09:15
  • de dthevenot