Selon l'enquête 2022 de StackOverflow, 46 % des développeurs professionnels considèrent MySQL comme la base de données la plus populaire à utiliser dans l'espace de travail. En tant que programmeurs, nous ne devrions pas nous soucier d’écrire à plusieurs reprises du code qui est par ailleurs facilement disponible, robuste et bien testé.
Pourtant, ce problème reste persistant dans l'espace de l'API REST, bien que le processus de mise en œuvre soit à ce stade routinier, répétitif et sujet aux erreurs et aux oublis. Cet oubli est coûteux pour plusieurs raisons :
Heureusement pour nous, programmeurs, la plateforme DreamFactory peut facilement absoudre votre équipe de tous ces tracas et bien plus encore en offrant une solution centralisée pour la documentation, la génération et la sécurité des API. Dans ce didacticiel, vous découvrirez à quel point il est facile de créer, sécuriser et déployer une API REST pour votre base de données MySQL.
Table des matières
Une API MySQL est un ensemble de fonctions, de protocoles et d'outils qui permettent aux développeurs d'interagir avec une base de données MySQL par programmation à partir de leurs applications ou scripts.
Cette API permet aux applications d'envoyer des requêtes à la base de données MySQL, de récupérer des données, de modifier des données et d'effectuer diverses opérations de base de données. Il agit comme une couche intermédiaire entre le code de l'application et le serveur de base de données, facilitant une communication transparente et une manipulation des données.
Les API MySQL courantes incluent MySQL Connector/ODBC, MySQL Connector/J (pour Java), MySQLi (pour PHP) et bien d'autres, chacune adaptée à des langages ou frameworks de programmation spécifiques.
Les API MySQL jouent un rôle central dans le développement de logiciels en facilitant l'interaction entre les applications et les bases de données MySQL.
Ces API agissent comme des « intermédiaires », faisant abstraction des complexités des opérations de base de données et fournissant une interface standardisée aux développeurs. Leur importance réside dans le fait de permettre aux applications de stocker, récupérer, modifier et gérer efficacement les données.
Les API MySQL offrent une compatibilité avec un large éventail de langages et de frameworks de programmation, permettant aux développeurs de travailler avec MySQL en utilisant leurs outils préférés. Ils améliorent la sécurité en offrant des fonctionnalités telles que les instructions préparées et la validation des entrées pour se protéger contre les vulnérabilités de sécurité courantes telles que l'injection SQL.
Les fonctionnalités d'optimisation des performances telles que le regroupement de connexions et la mise en cache contribuent à améliorer l'efficacité des interactions avec la base de données. La portabilité offerte par les API MySQL signifie que les applications peuvent potentiellement migrer vers différents systèmes de bases de données sans révision majeure du code, tandis que leurs capacités d'évolutivité les rendent adaptées à la gestion de charges de travail accrues.
Les API MySQL bénéficient du soutien étendu de la communauté des développeurs MySQL, garantissant une richesse de ressources, de bibliothèques et d'outils pour les développeurs.
DreamFactory peut générer des API REST pour une multitude de bases de données, parmi lesquelles MySQL, Microsoft SQL Server, Oracle, PostgreSQL et MongoDB.
Pour cela, vous vous connecterez à l'interface d'administration de DreamFactory, naviguerez vers Services puis entrerez dans l'interface de création de service en cliquant sur le bouton Créer situé à gauche de l'écran. À partir de là, vous sélectionnerez le type de service MySQL en accédant à Génération API > Base de données, puis en sélectionnant MySQL dans nos options de base de données (voir capture d'écran ci-dessous).
Ensuite, vous serez invité à fournir un nom, une étiquette et une description (ci-dessous la capture d'écran). Ces deux derniers sont utilisés uniquement à des fins de référence dans l'interface d'administration, mais la valeur du nom est particulièrement importante car, comme vous le verrez bientôt, elle fera partie de l'URL de l'API.
Enfin, cliquez sur l'onglet Config. Ici, vous serez invité à fournir les informations d'identification de connexion à la base de données (voir capture d'écran ci-dessous). Cela ne devrait vraiment pas être nouveau ; vous fournirez un nom d’hôte, un nom d’utilisateur, un mot de passe et une base de données. De plus, vous pouvez éventuellement spécifier d'autres caractéristiques de configuration telles que les options du pilote, le fuseau horaire et les préférences de mise en cache. Pour les besoins de ce tutoriel, je m'en tiendrai aux champs obligatoires et laisserai les fonctionnalités facultatives intactes.
Une fois les informations d'identification en place, appuyez simplement sur le bouton Enregistrer en bas de l'écran et croyez-le ou non, l'API REST a été générée !
En plus de l'API, DreamFactory générera également automatiquement un ensemble complet de documentation Swagger interactive pour votre API. Vous pouvez y accéder en cliquant sur l'onglet API Docs situé en haut de l'interface d'administration, puis en sélectionnant le service nouvellement généré par son nom. 44 points de terminaison vous seront présentés utiles pour exécuter des procédures stockées, effectuer des opérations CRUD, interroger des vues et bien plus encore. Par exemple, la capture d'écran suivante ne présente qu'un petit sous-ensemble de points de terminaison de l'API REST MySQL nouvellement générés !
Toutes les API générées par DreamFactory sont automatiquement protégées par (au minimum) une clé API. Vous pouvez éventuellement authentifier les utilisateurs à l'aide de l'authentification de base, de SSO ou des services d'annuaire (LDAP et Active Directory). De plus, vous pouvez associer chaque clé API et/ou utilisateur à un *rôle* qui détermine exactement à quels services l'utilisateur est autorisé à accéder. De plus, vous pouvez restreindre les interactions à une table ou un ensemble de tables de base de données spécifique, à un ou plusieurs points de terminaison spécifiques et même restreindre les méthodes HTTP autorisées.
Sécuriser les utilisateurs chargés d'interagir avec la base de données MySQL au nom de vos API est une partie extrêmement importante du processus de développement et d'intégration des API. Consultez nos autres recommandations sur l'amélioration de la sécurité des données avec les privilèges MySQL et DreamFactory
À titre d'exemple, créons un nouveau rôle qui restreint la clé API associée à l'interaction avec une seule table en lecture seule au sein de l'API MySQL nouvellement créée. Pour ce faire, accédez à l'onglet Rôles et cliquez sur le bouton Créer. L'interface trouvée dans la capture d'écran ci-dessous vous sera présentée.
Ensuite, cliquez sur l'onglet Accès. C’est ici que vous définirez ce que le rôle peut faire. Dans la capture d'écran ci-dessous, vous verrez que j'ai limité le rôle à l'interaction avec le service MySQL, et au sein de ce service, le rôle ne peut interagir qu'avec le point de terminaison _table/employees* via la méthode GET. Nous sommes en confinement bébé !
Enregistrez le rôle en cliquant sur le bouton Enregistrer. Nous allons maintenant créer une nouvelle clé API et associer la clé à ce rôle. Pour ce faire, cliquez sur l'onglet Clés API situé sous la liste déroulante des types d'API et sélectionnez Clés API, puis cliquez sur le bouton « + ». Attribuez un nom et une description à votre nouvelle application, assurez-vous qu'elle est définie sur Active, puis attribuez-lui le rôle par défaut de MySQL, comme je l'ai fait dans la capture d'écran ci-dessous. Concernant le paramètre de localisation de l'application, en supposant que vous prévoyez d'interagir avec l'API via une application Web ou mobile, ou via un autre service Web, vous souhaiterez alors sélectionner « Aucun stockage requis ».
Appuyez sur le bouton Enregistrer et vous serez renvoyé à l'écran d'index des applications où la nouvelle clé API peut être copiée ! Copiez la clé dans un fichier texte pour référence ultérieure.
Il nous reste une dernière étape de configuration avant de pouvoir tester l'API depuis l'extérieur de l'interface d'administration de DreamFactory. Vous devrez activer CORS (Cross-Origin Resource Sharing) pour la nouvelle API. Vous pouvez le trouver dans la liste déroulante Config et en sélectionnant CORS. À des fins de démonstration, vous pouvez définir le paramètre CORS par défaut comme je l'ai fait dans la capture d'écran ci-dessous, qui autorisera le trafic restreint par l'API à partir de toutes les adresses réseau :
Une fois l'API générée, la clé API et le rôle associé créés et CORS configuré, vous êtes prêt à commencer à interagir avec l'API via un client ! J'aime utiliser Insomnia pour les tests HTTP sur MacOS, mais une autre solution populaire est Postman.
Dans la capture d'écran suivante, j'utilise Insomnia pour contacter le point de terminaison /api/v2/_table/employees à l'aide d'une requête GET.
Rappelez-vous que nous avons verrouillé cette clé API pour interagir uniquement avec les /api/v2/_table/employees/* points de terminaison à l'aide de la méthode GET. Alors, que se passe-t-il si nous essayons de POST sur cette table ? Un code d'état 401 (Non autorisé) est renvoyé, comme illustré dans la capture d'écran suivante :
Evidemment, DreamFactory n’est pas la seule solution disponible. Une autre façon de créer une API REST MySQL consiste à la coder manuellement, mais cela prend beaucoup plus de temps et est plus difficile. Il existe également d'autres préoccupations à prendre en compte lors de la création manuelle d'une API, telles que la sécurité de l'API. Voici quelques brefs conseils sur la façon dont vous pouvez commencer à coder manuellement votre prochaine API.
La première étape pour créer une API MySQL REST consiste à configurer un serveur Web, tel qu'Apache ou Nginx, qui gérera les requêtes HTTP entrantes des clients et répondra avec le contenu approprié. Vous devrez également installer PHP sur le serveur, qui est un langage de script côté serveur pouvant interagir avec MySQL pour récupérer ou stocker des données. Enfin, vous devrez installer MySQL, qui est un système de gestion de bases de données relationnelles capable de stocker et de gérer des données dans des tables. Une fois tous ces composants configurés, vous serez prêt à commencer à créer l’API REST.
Une base de données est une collection de données associées organisées de manière structurée, par exemple dans des tableaux avec des colonnes et des lignes. MySQL est un système de gestion de bases de données relationnelles populaire qui vous permet de créer et de gérer des bases de données et des tables.
Pour créer une base de données dans MySQL, vous pouvez utiliser la commande CREATE DATABASE dans l'interface de ligne de commande MySQL ou un outil comme phpMyAdmin.
Pour vous connecter à la base de données MySQL depuis PHP, vous pouvez utiliser l'une des nombreuses extensions telles que MySQLi ou PDO. Une fois la connexion établie, vous pouvez exécuter des requêtes SQL pour récupérer les données de la base de données. Les requêtes SQL doivent être conçues pour récupérer les données que vous souhaitez exposer via l'API et doivent être paramétrées pour empêcher les attaques par injection SQL.
Une fois que vous avez récupéré les données de la base de données, vous pouvez les formater au format JSON à l'aide des fonctions intégrées de PHP. JSON est un format de données léger, facile à analyser et pris en charge par de nombreux langages de programmation.
PDO est une extension puissante et flexible qui fournit une interface cohérente pour accéder aux bases de données en PHP. PDO peut être utilisé avec une variété de pilotes de base de données, y compris MySQL, et fournit des fonctionnalités telles que des instructions préparées et la liaison de paramètres, qui peuvent aider à prévenir les attaques par injection SQL.
Pour utiliser PDO avec MySQL, vous devrez créer un nouvel objet PDO et transmettre les détails de connexion à votre base de données. Vous pouvez ensuite préparer une instruction SQL à l'aide de la méthode prepare(), lier tous les paramètres à l'aide des méthodes bindParam() ou bindValue() et exécuter l'instruction à l'aide de la méthodeexecute(). Enfin, vous pouvez récupérer les résultats de la requête à l'aide de méthodes telles que fetch(), fetchAll() ou fetchColumn().
La fonction json_encode() est une fonction PHP intégrée qui peut être utilisée pour convertir des données en une chaîne au format JSON. Vous pouvez transmettre n'importe quel type de données à la fonction, comme un tableau ou un objet, et il sera converti en une chaîne JSON qui peut être facilement consommée par les applications clientes.
Une fois que vous avez la chaîne au format JSON, vous devrez la transmettre au client à l'aide des en-têtes HTTP appropriés. En PHP, vous pouvez définir les en-têtes à l'aide de la fonction header(), qui vous permet de spécifier le type de contenu et d'autres métadonnées sur la réponse. Par exemple, pour générer des données JSON, vous pouvez définir l'en-tête Content-Type sur "application/json".
En produisant les données au format JSON et en définissant les en-têtes HTTP appropriés, vous pouvez vous assurer que votre API REST est facilement utilisable par les applications clientes et respecte les conventions Web standard.
Les requêtes HTTP sont la façon dont les clients (tels que les navigateurs Web ou les applications mobiles) communiquent avec votre API pour demander des données ou effectuer d'autres actions. Pour gérer ces requêtes, vous devrez écrire du code PHP capable de traiter la requête et de renvoyer une réponse appropriée.
PHP fournit plusieurs fonctions qui peuvent être utilisées pour accéder aux informations sur la requête en cours, telles que $_SERVER, $_GET, $_POST et $_REQUEST. Ces variables contiennent des informations telles que la méthode HTTP (par exemple GET ou POST), le chemin de l'URL et tous les paramètres de requête ou données du corps de la requête.
Pour gérer différents types de requêtes, vous devrez écrire du code PHP capable d'analyser les données entrantes et de déterminer l'action à entreprendre. Par exemple, si le client effectue une requête GET pour récupérer des données de l'API, votre code peut exécuter une requête SQL pour récupérer les données et les renvoyer sous forme de réponse JSON. Si le client effectue une requête POST pour créer un nouvel enregistrement, votre code peut insérer les nouvelles données dans la base de données MySQL et renvoyer un message de réussite.
Pour implémenter la gestion et la validation des erreurs dans votre API, vous devrez écrire du code PHP capable de détecter et de répondre aux erreurs et de valider les entrées de l'utilisateur. PHP fournit plusieurs fonctions intégrées qui peuvent être utilisées pour la gestion des erreurs, telles que trigger_error() ou set_error_handler(). Pour la validation, vous souhaiterez peut-être utiliser des expressions régulières, des filtres PHP ou des fonctions de validation personnalisées.
Pour déployer votre API, vous devrez télécharger les fichiers PHP et tout autre fichier requis (tels que CSS, JavaScript ou images) sur votre serveur Web. En fonction de la configuration de votre serveur Web, vous devrez peut-être modifier votre fichier .htaccess pour vous assurer que l'API achemine correctement.
Une fois votre API déployée, vous pouvez la tester à l'aide d'outils comme cURL ou Postman. Ces outils vous permettent d'envoyer des requêtes HTTP à votre API et d'inspecter les données de réponse. Vous pouvez utiliser ces outils pour tester différents types de requêtes (telles que GET, POST, PUT ou DELETE), tester la gestion et la validation des erreurs et garantir que l'API renvoie les données correctes dans le format correct (tel que JSON ou XML). ).
Lorsque vous testez votre API, il est important de prêter attention aux performances, à la sécurité et à la convivialité. Vous devez tester votre API dans différentes conditions (telles qu'un trafic élevé ou des connexions réseau lentes) pour vous assurer qu'elle fonctionne bien et reste stable. Vous devez également tester votre API pour détecter les vulnérabilités de sécurité (telles que l'injection SQL ou les scripts intersites) et vous assurer qu'elle est facile à utiliser et à comprendre pour les clients.
Voici un exemple de code PHP pour une API REST simple qui récupère les données d'une base de données MySQL :
Croyez-le ou non, nous n’avons fait qu’effleurer la surface de ce que DreamFactory peut faire pour vous. Si vous souhaitez voir nos connecteurs SQL Server, Oracle ou MongoDB en action, ou si vous souhaitez voir à quel point il est facile de convertir un service SOAP en REST sans écrire de code, pourquoi ne pas planifier une démo avec notre équipe d'ingénierie ! Rendez-vous sur https://www.dreamfactory.com/products et planifiez une démo dès aujourd'hui !
Autres bases de données prises en charge par DreamFactory :
L'article Comment créer une API MySQL REST en 6 étapes faciles est apparu pour la première fois sur DreamFactory Software- Blog.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!