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:02] – 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 7: | Ligne 7: | ||
Les web services utilisent une **architecture client/ | Les web services utilisent une **architecture client/ | ||
- | ===== Contextes | + | |
+ | ===== | ||
+ | ==== Webservice et API ==== | ||
+ | Une API(Application Programming Interface) est un ensemble de règles et d' | ||
+ | |||
+ | Les APIs peuvent être basées sur différents protocoles : | ||
+ | * HTTP/HTTPS (REST, GraphQL, SOAP, etc.) | ||
+ | * 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' | ||
+ | ===== ===== | ||
+ | Un web service est un type spécifique d'API qui est accessible via le réseau (généralement le web). | ||
+ | |||
+ | Les web services nécessitent un protocole réseau pour fonctionner, | ||
+ | |||
+ | Un web service fonctionne souvent en échangeant des données au format standardisé, | ||
+ | |||
+ | **Toutes les APIs ne sont pas des web services, mais tous les web services sont des APIs. | ||
+ | ** | ||
+ | ===== Exemples d' | ||
* __Cas n° 1__ : Supposons que vous disposiez d'un site marchand ayant un succès mondial. Les prix des produits proposés doivent être indiqués selon différentes devises. Comment tenir compte des derniers taux de change des différentes monnaies ? | * __Cas n° 1__ : Supposons que vous disposiez d'un site marchand ayant un succès mondial. Les prix des produits proposés doivent être indiqués selon différentes devises. Comment tenir compte des derniers taux de change des différentes monnaies ? | ||
Ligne 36: | Ligne 54: | ||
* 4xx : erreur de la part du client (400 : erreur de requête, 401 : non autorisé, 404 : non trouvé) | * 4xx : erreur de la part du client (400 : erreur de requête, 401 : non autorisé, 404 : non trouvé) | ||
* 5xx : erreur au niveau du serveur | * 5xx : erreur au niveau du serveur | ||
- | La réponse peut être un simple **fichier texte**, un fichier **XML**, ou un fichier **JSON**. | + | La réponse peut être un simple **fichier texte**, un fichier **XML**, ou un fichier **JSON**. |
+ | |||
+ | < | ||
===== ===== | ===== ===== | ||
==== SOAP (Simple Object Access Protocol) ==== | ==== SOAP (Simple Object Access Protocol) ==== | ||
Ligne 70: | 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 86: | 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 96: | 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// | ||
- |