Maison > développement back-end > tutoriel php > PHP Master | Écrire un service Web RESTful avec Slim

PHP Master | Écrire un service Web RESTful avec Slim

Lisa Kudrow
Libérer: 2025-02-26 09:13:10
original
637 Les gens l'ont consulté

PHP Master | Writing a RESTful Web Service with Slim

Cette série SitePoint a exploré les principes de repos. Cet article montre la création d'un service Web RESTful utilisant Slim, un micro-travail PHP inspiré de Sinatra (Ruby). La nature légère de Slim, avec des composants centraux comme le routage, la manipulation de la demande / réponse et le support de vue minimale, le rend idéal pour les simples API de repos.

Concepts clés:

  • Slim est un micro-travail PHP parfait pour les services reposants simples, prenant en charge PHP 5.2 et les styles de programmation fonctionnels procéduraux et (5.3).
  • Itinéte les fonctions URI vers des fonctions de rappel pour des méthodes HTTP spécifiques. Slim gère efficacement plusieurs méthodes pour le même URI.
  • Un exemple d'application de gestion de bibliothèque présente la liste, l'ajout, la suppression et la mise à jour des détails du livre via des appels de service Web. Notorm, une bibliothèque de base de données PHP légère, gère l'interaction de la base de données.
  • Les points de terminaison utilisent respectivement post(), put() et delete() pour créer, mettre à jour et supprimer des enregistrements de livres respectivement.

Présentation de Slim:

Commencez par télécharger Slim. Cet exemple utilise le style 5.3. Créer index.php:

<?php
require "Slim/Slim.php";

$app = new Slim();

$app->get("/", function () {
    echo "<h1>Hello Slim World</h1>";
});

$app->run();
?>
Copier après la connexion
Copier après la connexion

Accéder à index.php dans votre navigateur affiche "Hello Slim World". Slim Autoloads Fichiers nécessaires. Le constructeur mince accepte la configuration (par exemple, MODE, TEMPLATES.PATH, VIEW). MODE Définit l'environnement (développement / production), et TEMPLATES.PATH Spécifie le répertoire de modèle. Les gestionnaires d'affichage personnalisés peuvent remplacer la valeur par défaut Slim_View. Exemple:

<?php
$app = new Slim(array(
    "MODE" => "development",
    "TEMPLATES.PATH" => "./templates"
));
?>
Copier après la connexion
Copier après la connexion

La création d'itinéraire est cruciale. Les routes mappent les uris vers des fonctions de rappel basées sur les méthodes HTTP. Slim priorise le premier itinéraire de correspondance; Les demandes inégalées entraînent une erreur 404. Après avoir défini des itinéraires, appelez run() pour démarrer l'application.

Construire un service de bibliothèque:

Créons un service de gestion de bibliothèque. Notorm simplifie l'interaction de la base de données (nécessite une instance de PDO).

<?php
require "NotORM.php";

$pdo = new PDO($dsn, $username, $password); // Replace with your database credentials
$db = new NotORM($pdo);
?>
Copier après la connexion

Listing Books:

Ce point de terminaison répertorie tous les livres au format JSON:

<?php
// ... (previous code) ...

$app->get("/books", function () use ($app, $db) {
    $books = array();
    foreach ($db->books() as $book) {
        $books[] = array(
            "id" => $book["id"],
            "title" => $book["title"],
            "author" => $book["author"],
            "summary" => $book["summary"]
        );
    }
    $app->response()->header("Content-Type", "application/json");
    echo json_encode($books);
});
// ... (rest of the code) ...
Copier après la connexion

get() gère les demandes d'obtention. use permet d'accéder aux variables externes dans la fonction anonyme. L'en-tête de réponse est défini sur application/json, et les données du livre sont codées sous forme de json.

Obtenir les détails du livre:

Récupérer un livre par id:

<?php
// ... (previous code) ...

$app->get("/book/:id", function ($id) use ($app, $db) {
    $app->response()->header("Content-Type", "application/json");
    $book = $db->books()->where("id", $id);
    if ($data = $book->fetch()) {
        echo json_encode(array(
            "id" => $data["id"],
            "title" => $data["title"],
            "author" => $data["author"],
            "summary" => $data["summary"]
        ));
    } else {
        echo json_encode(array(
            "status" => false,
            "message" => "Book ID $id does not exist"
        ));
    }
});
// ... (rest of the code) ...
Copier après la connexion

Le paramètre de route :id est transmis à la fonction de rappel. Les paramètres facultatifs utilisent /book(/:id). Pour les paramètres facultatifs sans arguments de rappel explicites, utilisez func_get_args().

Ajout et modification des livres:

post() Ajoute et put() met à jour les livres:

<?php
require "Slim/Slim.php";

$app = new Slim();

$app->get("/", function () {
    echo "<h1>Hello Slim World</h1>";
});

$app->run();
?>
Copier après la connexion
Copier après la connexion

$app->request()->post() et $app->request()->put() Récupérer le post et mettre les données respectivement. Pour les demandes de put basées sur le navigateur, utilisez un champ caché _METHOD avec la valeur "Put" dans votre formulaire.

Suppression de livres:

Supprimer un livre par id:

<?php
$app = new Slim(array(
    "MODE" => "development",
    "TEMPLATES.PATH" => "./templates"
));
?>
Copier après la connexion
Copier après la connexion

La méthode delete() supprime l'enregistrement de la base de données. La méthode map() gère plusieurs méthodes HTTP sur un seul itinéraire (non illustré ici).

Conclusion:

Cet article montre la création d'un service Web RESTful de base avec Slim. Le développement supplémentaire devrait inclure une gestion des erreurs robuste et une validation d'entrée. Le code source (non inclus ici) peut être trouvé sur GitHub (lien non fourni dans le texte d'origine). La section FAQ du texte d'origine est omise car elle fournit des informations de base facilement disponibles via la documentation de Slim.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal