Dans cet article, nous allons créer une Interface de Programmation d'Application (API) en utilisant PHP et MySQL. L'objectif d'une API REST est de créer un système facilement utilisable par d'autres applications sans se préoccuper du langage dans lequel l'API a été créée. REST signifie Representational State Transfer, une architecture utilisée par les systèmes pour définir les méthodes d'accès aux services Web.
Dans notre article précédent "Introduction aux APIs", nous avons discuté de ce qu'est une API, de son importance, de son utilisation et de la façon dont elle est utilisée, et après avoir posé les bases des APIs, nous allons maintenant créer une API de connexion simple.
Les API REST comprennent des opérations CRUDL'acronyme informatique anglais CRUD (pour Create, Read, Update, Delete) (parfois appelé SCRUD avec un "S" pour Search) désigne les quatre opérations de base pour la persistance des données, en particulier le stockage d'informations en base de données. (Create, Read, Update, Delete), ce qui signifie que vous pouvez créer une API qui crée (ajoute des données à la base de données), lit (sélectionne des données dans la base de données), met à jour (modifie les données dans la base de données) et supprime (enlève les données de la base de données), et peut être accessible en créant une requête HTTP sous forme de POST, GET ou PUT.
Création d'une API REST de connexion
Supposons que nous avons des utilisateurs enregistrés dans une table de base de données appelée "clients"
, comme indiqué ci-dessous :
ID | Nom du client (Name) | E-mail (Email) | Mot de passe (Password) |
---|---|---|---|
1 | Jean Dupont | jean@example.com | 1234 |
2 | Julie Dupont | julie@example.com | 4321 |
Nous voulons permettre aux utilisateurs d'autres applications, par exemple une application Android, de se connecter lorsqu'ils saisissent leur adresse e-mail et leur mot de passe sur l'application.
Dans votre espace serveur, par exemple le Cpanel ou tout autre serveur, créez un fichier nommé "login.php"
.
- Ouvrez le fichier et ajoutez le code suivant :
- Ensuite, ajoutez la connexion à la base de données.
getMessage();
}
?>
Le code utilise la méthode PDO pour se connecter à la base de données. "localhost"
correspond à l'adresse du serveur de la base de données, "databasename"
est le nom de la base de données, "username"
est le nom d'utilisateur de la base de données et "password1"
est le mot de passe associé à cet utilisateur.
- Ensuite, nous collectons les valeurs envoyées depuis l'application externe qui souhaite accéder à la base de données, dans ce cas, nous nous attendons à ce que l'e-mail et le mot de passe soient envoyés. Par conséquent, nous utilisons la méthode POST pour extraire ces valeurs et leur attribuer des variables comme indiqué ci-dessous.
- Ensuite, nous allons faire une requête à la base de données et confirmer si les valeurs insérées par le client correspondent à celles de la base de données.
Nous allons utiliser l'une des opérations CRUD : READ (SELECT).
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
$stmt = $pdo->prepare("SELECT * FROM clients WHERE Email=:email AND Password=:password");
$stmt->execute(array(':email' => $email, ':password' => $password));
$count = $stmt->rowCount();
if ($count > 0) {
/* si le résultat est supérieur à zéro, cela signifie que les valeurs
insérées par le client correspondent à ce qui est enregistré dans la base
de données et donc nous accordons au client l'accès au système car
il a été authentifié. */
}
?>
- Ensuite, nous allons afficher un message de succès sous forme de tableau JSON lorsque les valeurs correspondent, tout en affichant un message d'erreur lorsque les valeurs ne correspondent pas.
prepare("SELECT * FROM clients WHERE Email=:email AND Password=:password");
$stmt->bindParam(':email', $email);
$stmt->bindParam(':password', $password);
$stmt->execute();
if($stmt->rowCount() > 0){
$json = array("status" => 200,'message' => "Success");
} else {
$json = array("status" => 300,'message' => "Error");
}
?>
Note : Ceci suppose qu'un objet PDO a été créé et stocké dans la variable $pdo
avec les informations de connexion appropriées à la base de données.
- Enfin, affichez le résultat JSON en imprimant la variable
$json
:
Note : Dans PDO, il n'y a pas de fonction "mysqli_close()"
. Au lieu de cela, on ferme la connexion en mettant la variable de connexion à null
.
La variable $json
contient un tableau associatif qui est utilisé pour stocker les résultats de l'opération de connexion. Pour renvoyer ces résultats sous forme de réponse JSON, il faut encoder ce tableau en une chaîne JSON valide. C'est pourquoi nous avons converti la variable $json
en une chaîne JSON en utilisant la fonction json_encode()
avant de l'afficher avec la commande echo
.
Le code complet de connexion est comme suit :
PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
throw new PDOException($e->getMessage(), (int)$e->getCode());
}
// Récupération des valeurs envoyées par l'application externe
$email = $_POST["email"];
$password = $_POST["password"];
// Requête pour vérifier si les valeurs correspondent à celles de la base de données
$stmt = $pdo->prepare("SELECT * FROM clients WHERE Email=:email AND Password=:password");
$stmt->execute(['email' => $email, 'password' => $password]);
$count = $stmt->rowCount();
// Affichage du message de succès ou d'erreur sous forme de tableau JSON
if ($count > 0) {
$json = array("status" => 200, "message" => "Success");
} else {
$json = array("status" => 300, "message" => "Error");
}
echo json_encode($json);
// Fermeture de la connexion à la base de données
$pdo = null;
?>
Conclusion
Nous avons créé une API REST simple qui peut être utilisée par d'autres applications pour accéder à des données dans une base de données qui n'est pas dans leur application.
* Pay to Play
Comme dans le domaine de la musique, le pay to play (ou payola) est la pratique par laquelle un artiste ou son représentant (maison de disques, agent) paye la personne contrôlant l'accès à un moyen de diffusion (salle de spectacle, émission de radio) afin d'accéder à ce moyen, dans le domaine du webmarketing une entreprise ou son agence de e-marketing paye les grands acteurs du numérique (Google, Facebook …) afin d’accéder à un public cible par les moyens publicitaires sur ces plateformes.