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:13] – [Définition] 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 8: Ligne 8:
 Les web services utilisent une **architecture client/serveur** dans laquelle des clients (ordinateur, tél.  portable, …) utilisent, via Internet, des procédures qui sont stockées sur un serveur d'applications.  Les web services utilisent une **architecture client/serveur** dans laquelle des clients (ordinateur, tél.  portable, …) utilisent, via Internet, des procédures qui sont stockées sur un serveur d'applications. 
  
 +=====  =====
 ==== Webservice et API ==== ==== Webservice et API ====
 Une API(Application Programming Interface) est un ensemble de règles et d'outils qui permet à deux applications ou systèmes de communiquer entre eux. Les APIs définissent comment des composants logiciels doivent interagir. Elles peuvent être utilisées pour diverses finalités, pas uniquement sur le web. Une API(Application Programming Interface) est un ensemble de règles et d'outils qui permet à deux applications ou systèmes de communiquer entre eux. Les APIs définissent comment des composants logiciels doivent interagir. Elles peuvent être utilisées pour diverses finalités, pas uniquement sur le web.
Ligne 15: Ligne 16:
   * Bibliothèques locales (par exemple : des APIs dans un langage comme Python ou Java)   * Bibliothèques locales (par exemple : des APIs dans un langage comme Python ou Java)
   * Communication bas-niveau (ex. APIs système pour accéder à des fonctionnalités du matériel ou du système d'exploitation).   * Communication bas-niveau (ex. APIs système pour accéder à des fonctionnalités du matériel ou du système d'exploitation).
 +=====  =====
 Un web service est un type spécifique d'API qui est accessible via le réseau (généralement le web). Un web service est un type spécifique d'API qui est accessible via le réseau (généralement le web).
  
Ligne 22: Ligne 23:
 Un web service fonctionne souvent en échangeant des données au format standardisé, comme XML ou JSON. Un web service fonctionne souvent en échangeant des données au format standardisé, comme XML ou JSON.
  
 +**Toutes les APIs ne sont pas des web services, mais tous les web services sont des APIs. 
 +**
 ===== Exemples d'utilisations d'un webservice ===== ===== Exemples d'utilisations d'un webservice =====
    
Ligne 88: 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 104: 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 114: 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.1736756013.txt.gz
  • Dernière modification : 2025/01/13 09:13
  • de dthevenot