Académique Documents
Professionnel Documents
Culture Documents
WayToLearnX » Développement Web » Web service » Créer et utiliser une API REST en PHP
Articles Recommandés
Web service
À quoi sert un
Service Web
Les applications professionnelles
modernes utilisent diverses plates-
PHP Avancé Web service formes de programmation pour
développer des applications Web.
Créer et utiliser une API REST en PHP Certaines…
Architecture
R EST (Representational State Transfer) est l’un des moyens pour accéder aux Web
services. L’API REST est utilisée pour effectuer une requête HTTP GET, POST, PUT ou
Microservices
Recherche
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 1/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
Les services Web basés sur REST peuvent produire une sortie dans n’importe quel
format, tel que CSV, JSON, RSS, etc. Cela dépend donc du format que vous souhaitez
analyser facilement avec votre langage. Dans ce tutoriel, nous allons créer une API
REST simple à l’aide du langage PHP.
Commençons par créer un exemple d’API rest, nous allons créer un répertoire ‘api/’. Ce
répertoire contient tous les fichiers nécessaires pour ce tutoriel. Nous créerons un api
rest pour le module produit qui aura la requête HTTP Get, Post, Put et Delete pour
récupérer, ajouter, mettre à jour et supprimer les enregistrements de mysql. Les
détails de l’API rest sont les suivants:
post.php: Ce fichier permet d’envoyer une requête POST à notre API REST pour
tester l’ajout d’un nouveau produit.
put.php: Ce fichier permet d’envoyer une requête PUT à notre API REST pour
tester la mise à jour d’un nouveau produit.
delete.php: Ce fichier permet d’envoyer une requête DELETE à notre API REST
pour tester la suppression d’un nouveau produit.
TUTORIELS ASTUCES
Télécharger le code source en cliquant ici.
QCM DÉFI / EXERCICES FORUM
CON
Pour le moment, ajouter ces enregistrements manuellement, parce que nous allons
voir comment les ajoutés en utilisant l’api Rest.
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 3/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
1. <?php
2. $server = "localhost";
3. $username = "root";
4. $password = "";
5. $db = "stock";
6. $conn = mysqli_connect($server, $username, $password,
$db);
7. ?>
1. <?php
2. // Se connecter à la base de données
3. include("db_connect.php");
4. $request_method = $_SERVER["REQUEST_METHOD"];
5. ...
6. ?>
Nous avons également utilisé la méthode $_SERVER pour accéder aux informations sur
l’action, comme l’ajout, la modification ou la suppression.
Dans le même fichier, Nous allons « switcher » entre les méthodes de requête( comme
GET, POST, DELETE et PUT) à l’aide de l’instruction « switch » en PHP :
1. <?php
2. switch($request_method)
3. {
4. case 'GET':
5. if(!empty($_GET["id"]))
6. {
7. // Récupérer un seul produit
8.
9.
$id = intval($_GET["id"]);
getProducts($id);
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 4/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
10. }
11. TUTORIELS
else ASTUCES QCM DÉFI / EXERCICES FORUM
CON
12. {
13. // Récupérer tous les produits
14. getProducts();
15. }
16. break;
17. default:
18. // Requête invalide
19. header("HTTP/1.0 405 Method Not Allowed");
20. break;
21. }
22. ?>
Nous avons créé une requête GET pour extraire toutes les données relatives aux
produits de la base de données mysql. Pour les données relatives à un seul produit,
nous transmettons l’id du produit. Nous avons défini la méthode getProducts() afin que
nous puissions créer une méthode comme ci-dessous:
1. <?php
2. function getProducts()
3. {
4. global $conn;
5. $query = "SELECT * FROM produit";
6. $response = array();
7. $result = mysqli_query($conn, $query);
8. while($row = mysqli_fetch_array($result))
9. {
10. $response[] = $row;
11. }
12. header('Content-Type: application/json');
13. echo json_encode($response, JSON_PRETTY_PRINT);
14. }
15. ?>
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 5/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
1. function getProduct($id=0)
2. {
3. global $conn;
4. $query = "SELECT * FROM produit";
5. if($id != 0)
6. {
7. $query .= " WHERE id=".$id." LIMIT 1";
8. }
9. $response = array();
10. $result = mysqli_query($conn, $query);
11. while($row = mysqli_fetch_array($result))
12. {
13. $response[] = $row;
14. }
15. header('Content-Type: application/json');
16. echo json_encode($response, JSON_PRETTY_PRINT);
17. }
Nous allons ajouter un nouveau cas dans le bloc « Switch » comme indiqué ci-dessous :
1. <?php
2. ...
3. case 'POST':
4. // Ajouter un produit
5. AddProduct();
6. break;
7. ...
8. ?>
1. <?php
2. function AddProduct()
3. {
4. global $conn;
5. $name = $_POST["name"];
6. $description = $_POST["description"];
7. $price = $_POST["price"];
8. $category = $_POST["category"];
9. $created = date('Y-m-d H:i:s');
10. $modified = date('Y-m-d H:i:s');
11.
12. echo $query="INSERT INTO produit(name, description,
price, category_id, created, modified) VALUES('".$name."',
'".$description."', '".$price."', '".$category."',
'".$created."', '".$modified."')";
13.
14. if(mysqli_query($conn, $query))
15. {
16. $response=array(
17. 'status' => 1,
18. 'status_message' =>'Produit ajoute avec succes.'
19. );
20. }
21. else
22. {
23. $response=array(
24. 'status' => 0,
25. 'status_message' =>'ERREUR!.'. mysqli_error($conn)
26. );
27. }
28. header('Content-Type: application/json');
29. echo json_encode($response);
30. }
31. ?>
Nous allons maintenant tester notre API Rest pour ajouter un nouveau produit en
envoyant une requête POST, pour cela nous allons créer le fichier « post.php » et en
ajoutant le code suivant.
1. <?php
2. $url = 'http://127.0.0.1/api/produits';
3. $data = array('name' => 'PEC', 'description' => 'Pencil
2H', 'price' => '2.25', 'category' => '9');
4.
5. // utilisez 'http' même si vous envoyez la requête sur
https:// ...
6. $options = array(
7.
8.
'http' => array(
'header' => "Content-type: application/x-www-form-
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 7/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
urlencoded\r\n",
9. TUTORIELS
'method' ASTUCES
=> 'POST', QCM DÉFI / EXERCICES FORUM
CON
11. )
12. );
13. $context = stream_context_create($options);
14. $result = file_get_contents($url, false, $context);
15. if ($result === FALSE) { /* Handle error */ }
16.
17. var_dump($result);
18. ?>
Nous allons ajouter un nouveau cas dans le bloc « Switch » comme indiqué ci-dessous :
1. <?php
2. ...
3. case 'PUT':
4. // Modifier un produit
5. $id = intval($_GET["id"]);
6. updateProduct($id);
7. break;
8. ...
9. ?>
Puisque PHP n’a pas de variable $_PUT similaire à $_GET et $_POST pour récupérer les
valeurs transmises, nous utilisons les flux d’entrée (input stream 'php://input' )
pour obtenir ces valeurs pour mettre à jour un produit.
LIRE PLUS
1. <?php
2. function updateProduct($id)
3. {
4. global $conn;
5. $_PUT = array(); //tableau qui va contenir les données
6.
reçues
parse_str(file_get_contents('php://input'), $_PUT);
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 8/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
7. $name = $_PUT["name"];
8. TUTORIELS ASTUCES
$description QCM DÉFI / EXERCICES
= $_PUT["description"]; FORUM
CON
9. $price = $_PUT["price"];
CURL est un moyen d’accéder à une URL à partir de notre code pour en
obtenir une réponse HTML. Il vous permet de vous connecter…
LIRE PLUS
Nous allons maintenant tester notre API Rest pour mettre à jour le produit en envoyant
une requête PUT via cURL, pour cela nous allons créer le fichier « put.php » et en
ajoutant le code suivant.
1. <?php
2. $url = "http://127.0.0.1/api/produits/1"; // modifier le
produit 1
3. $data = array('name' => 'MAC', 'description' => 'Ordinateur
portable', 'price' => '9658', 'category' => '2');
4.
5. $ch = curl_init($url);
6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
7. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
8. curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
9.
10. $response = curl_exec($ch);
11.
12. var_dump($response);
13.
14. if (!$response)
15. {
16. return false;
17. }
18. ?>
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 9/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
Nous allons ajouter un nouveau cas dans le bloc « Switch » comme indiqué ci-dessous :
1. <?php
2. ...
3. case 'DELETE':
4. // Supprimer un produit
5. $id = intval($_GET["id"]);
6. deleteProduct($id);
7. break;
8. ...
9. ?>
1. <?php
2. function deleteProduct($id)
3. {
4. global $conn;
5. $query = "DELETE FROM produit WHERE id=".$id;
6. if(mysqli_query($conn, $query))
7. {
8. $response=array(
9. 'status' => 1,
10. 'status_message' =>'Produit supprime avec succes.'
11. );
12. }
13. else
14. {
15. $response=array(
16. 'status' => 0,
17. 'status_message' =>'La suppression du produit a
echoue. '. mysqli_error($conn)
18. );
19. }
20. header('Content-Type: application/json');
21. echo json_encode($response);
22. }
23. ?>
Nous allons maintenant tester notre API Rest pour supprimer le produit en envoyant
une requête DELETE via cURL, pour cela nous allons créer le fichier « delete.php » et en
ajoutant le code suivant.
1.
2.
<?php
$url = "http://127.0.0.1/api/produits/1"; // supprimer le
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 10/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
produit 1
3. TUTORIELS
$ch ASTUCES
= curl_init(); QCM DÉFI / EXERCICES FORUM
CON
Conclusion
Il y’a une autre solution, pour tester les méthodes GET/POST/PUT/DELETE que nous
avons vu dans ce tutoriel en utilisant Postman, qui est un outil open-source pour tester
les API RESTful que vous avez créées vous-même. Il offre une interface utilisateur avec
laquelle faire des requêtes HTML, sans avoir à écrire un tas de code juste pour tester
les fonctionnalités d’une API.
Questions sur PHP avec des réponses pour la préparation des entretiens
d’embauche, des tests en ligne, aux examens et aux certifications. Ces
questions et réponses…
LIRE PLUS
PHP – Héritage
QCM AngularJS
QCM React
QCM Python
QCM Cloud Computing
QCM Javascript
QCM jQuery
QCM Oracle
QCM sur GIT – Gestionnaire de version
QCM Réseau
QCM en C
QCM en C#
QCM Word
QCM Excel
QCM PowerPoint
QCM Access
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 12/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
À quoi sert un Service Les classes et les objets Gestion des exceptions
Web en PHP en PHP
juillet 25, 2019 2 juillet 13, 2019 0 juillet 21, 2019 0
eric
janvier 6, 2020 à 9:40
Permalien
Pour ceux qui ne souhaitent pas voir retournés les lignes indexés par le numéro de
champs, il suffit d’utiliser le paramètre MYSQLI_ASSOC :
{
"id": "1",
"name": "PEN",
"price": "1",
"category_id": "1",
},
à la place de:
{
"0": "1",
"id": "1",
"1": "PEN",
"name": "PEN",
"3": "1",
"price": "1",
"4": "1",
"category_id": "1",
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 13/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
"5": "2020-07-04 00:00:00",
TUTORIELS "2020-07-04
"created": ASTUCES 00:00:00",
},
moreira
janvier 24, 2020 à 7:57
Permalien
la mise a jour de la base de donnée ne fonctionne pas. en effet j’ai fait un écho de la
requete et les valeur ne sont pas remis dedans…
Thomas Clavet
janvier 24, 2020 à 8:25
Permalien
au
janvier 24, 2020 à 11:00
Permalien
J’ai ainsi pris le code source j’ai ainsi le même problème même plus (juste les retour du
type produit bien ajouté).
moreira
janvier 24, 2020 à 11:03
Permalien
La mise a jour remet tout les chaînes de caractère dans la base de donnée vide. il y a
juste heure et la date de modification qui se met à jours.
Thomas Clavet
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 14/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
Paul
janvier 30, 2020 à 5:03
Permalien
pourriez-vous donnez le code permettant de récupérer les données et les afficher sur
une page web.
Thomas Clavet
janvier 30, 2020 à 5:22
Permalien
Paulo
février 11, 2020 à 11:13
Permalien
Petit pinaillement : Tout est fait pour être en ASCII dans le code source, SAUF dans
produits.php la ligne « ‘status_message’ =>’Produit ajouté avec succès.' » qui contient
des accents 😉
Je le mentionne car tous le reste est sans accents, donc je suppose que la volonté
initiale était de ne mettre aucun accents.
Thomas Clavet
février 11, 2020 à 11:37
Permalien
Oui, c’est pour quoi j’ai supprimé les accents, c’est pour éviter les erreurs de codage.
Merci pour cette remarque, c’est corrigé 🙂
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 15/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
kmellia
Bonjour, j’ai testé votre tuto avec la base de données fournie en exemple et cela
fonctionne parfaitement.
J’ai essayé de reproduire la même chose avec une autre base de données contenant
des membres et là rien ne s’affiche. J’ai une page blanche.
Il ne s’agit pas de la connexion à la base de données, j’ai testé les nouveaux identifiants
avec la page produits et ça s’affiche.
Thomas Clavet
février 19, 2020 à 4:08
Permalien
Bonjour kmellia 🙂
Pour afficher les données des membres sur le navigateur, d’abord vous devez
insérer des données dans la base de donnée soit via l’api(méthode POST) soit
manuellement en utilisant l’instruction insert:
INSERT INTO membres VALUES (1, 'Thomas', 20, ....); exécutez-le sur le
shell MySQL, ou via PHPmyAdmin, comme montré sur le tutoriel.
Si vous pensez que vous avez des erreurs dans votre code, essayez d’ajouter ces
lignes au début de votre fichier PHP, pour afficher tous les erreurs de votre script:
1. ini_set('display_errors', 1);
2. ini_set('display_startup_errors', 1);
3. error_reporting(E_ALL);
Bon courage 🙂
kmellia
février 20, 2020 à 10:48
Permalien
ça peut jouer ?
J’ai ajouté les lignes plus haut dans le fichier php juste après la balise ouvrante mais ça
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 16/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
Thomas Clavet
février 20, 2020 à 11:29
Permalien
Si’il ne renvoie rien, remplacer la ligne 7 par la ligne suivante, pour voir si il y a des
erreurs au niveau de la requête
kmellia
février 20, 2020 à 11:16
Permalien
Que dois-je faire, ajouter pour que les accents soient pris en compte ?
kmellia
février 20, 2020 à 11:18
Permalien
Sans accent, les données s’affichent très bien et avec accent j’ai une page blanche.
Que dois-je faire/ajouter pour que les accents soient pris en compte ?
Thomas Clavet
février 20, 2020 à 11:36
Permalien
Ok, super 🙂
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 17/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
kmellia
février 20, 2020 à 11:44
Permalien
Paul
février 27, 2020 à 9:17
Permalien
Bonjour,
j’ai ainsi effectué votre tuto maintenant je voudrais mettre en place un système
d’identification pour un administrateur. En effet, je voudrais que lorsque
l’administrateur se connecte il pourrait modifier les ressources (UPDATE, DELETE,
ADD). Alors que les personnes pas identifier pourront que les consulter.
Auriez vous un tuto pour faire cela, j’ai fais quelque recherche mais sans trop
réellement de succès
Thomas Clavet
février 28, 2020 à 6:12
Permalien
Salut Paul 🙂
Bon courage.
paul
février 29, 2020 à 5:00
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 18/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
Permalien
TUTORIELS ASTUCES QCM DÉFI / EXERCICES FORUM
CON
Bonjour,
suite a ma demande pour faire un espace d’administrateur. j’ai une question car
en effet si j’effectue ce tuto. l’API REST ne sera pas sécuriser car si on utilise
postman un pirate pourra toujours supprimer ou ajouter une ressource via l’url.
De plus une api doit rester sans état donc pas possible de crée une une session
sur le serveur..
Cordialement
Thomas Clavet
mars 1, 2020 à 1:25
Permalien
Vous pouvez utiliser le token (par exemple: JWT) pour authentifier l’utilisateur,
Dans Postman il y a un champ où l’utilisateur doit spécifier le token pour qu’il
puisse exécuter la requête.
Paul
mars 1, 2020 à 2:53
Permalien
J’ai un peux chercher sur internet mais rien de vraiment concluant pour moi je vous
remercie
Thomas Clavet
avril 5, 2020 à 12:57
Permalien
Avec plaisir 🙂
Restez connecter, peut-être que nous allons ajouter un tuto sur la sécurité des API.
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 19/21
03/08/2022 08:28 Créer et utiliser une API REST en PHP - WayToLearnX
TIRANI
avril 4, 2020 à 6:22
Permalien
Bonjour;
Très bonne tuto, je l’ai effectué et testé. Maintenant, pouvons nous ajouter un champs
Image dans la table et l’afficher correctement, sachant que json n’accepte pas les
données BLOB.
Sachant que je travaille sur Windev Mobine, je voudrai apprendre plus sur ce genre
d’API.
Thomas Clavet
avril 5, 2020 à 1:04
Permalien
Si j’ai bien compris, vous souhaitez transférer des images vers une application
mobile via JSON. Vous pouvez encoder l’image en Base64. En fait les données
binaires en JSON sont généralement mieux représentées sous une forme encodée
en Base64. Essayer le code suivant pour afficher une image stocké dans votre table:
TIRANI
avril 6, 2020 à 3:02
Permalien
Thomas Clavet
avril 6, 2020 à 5:07
Permalien
Commentaires fermés.
https://waytolearnx.com/2019/07/creer-et-utiliser-une-api-rest-en-php.html 21/21