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:17] – [À noter :] 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 94: Ligne 94:
    
 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.1736756220.txt.gz
  • Dernière modification : 2025/01/13 09:17
  • de dthevenot