Diese SitePoint -Serie hat Ruheprinzipien untersucht. Dieser Artikel zeigt, dass ein erholsamer Webdienst mit Slim, einem von Sinatra (Ruby) inspirierten PHP Micro-Framework, erstellt wird. Die leichte Natur von Slim mit Kernkomponenten wie Routing, Anforderungs-/Antworthandhabung und Support für minimale Sichtweise macht es ideal für einfache REST -APIs.
Schlüsselkonzepte:
post ()
, put ()
und delete ()
Methoden zum Erstellen, Aktualisieren und Löschen von Buchsätzen. vorstellen schlank:
Beginnen Sie mit dem Herunterladen von Slim. In diesem Beispiel wird der 5.3 -Stil verwendet. Create index.php
:
get("/", function () {
echo "Hello Slim World
";
});
$app->run();
?>
auf index.php
in Ihrem Browser anzeigen "Hallo schlanke Welt". Slim Autoloads notwendige Dateien. Der schlanke Konstruktor akzeptiert die Konfiguration (z. B. modus
, templates.path
, view
). modus
legt die Umgebung (Entwicklung/Produktion) fest, und templates.path
Gibt das Vorlagenverzeichnis an. Benutzerdefinierte Ansicht können die Standard SLIM_View
ersetzen. Beispiel:
"development",
"TEMPLATES.PATH" => "./templates"
));
?>
Routenschöpfung ist entscheidend. Routes mart URIs zu Rückruffunktionen basierend auf HTTP -Methoden. Slim priorisiert die erste passende Route; Unübertroffene Anforderungen führen zu einem 404 -Fehler. Nachdem Sie Routen definiert haben, rufen Sie run ()
an, um die Anwendung zu starten.
Erstellen eines Bibliotheksdienstes:
Lassen Sie uns einen Bibliotheksmanagementdienst erstellen. NotorM vereinfacht die Datenbankinteraktion (erfordert eine PDO -Instanz).
.
Listing Bücher:
Dieser Endpunkt listet alle Bücher im JSON -Format auf:
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) ...
get ()
Handles Get Anfragen. verwenden
erlaubt den Zugriff auf externe Variablen in der anonymen Funktion. Der Antwortkopf ist auf application/json
gesetzt, und die Buchdaten werden als json codiert.
Erhalten Sie Buchdetails:
Ring ein Buch von ID ab:
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) ...
Die Route Parameter : id
wird an die Rückruffunktion übergeben. Optionale Parameter verwenden /book (/: id)
. Für optionale Parameter ohne explizite Rückrufargumente verwenden Sie func_get_args ()
.
Hinzufügen und Bearbeiten von Büchern:
post ()
fügt und put ()
aktualisiert Bücher:
post("/book", function () use ($app, $db) {
$app->response()->header("Content-Type", "application/json");
$book = $app->request()->post();
$result = $db->books->insert($book);
echo json_encode(array("id" => $result["id"]));
});
$app->put("/book/:id", function ($id) use ($app, $db) {
$app->response()->header("Content-Type", "application/json");
$book = $db->books()->where("id", $id);
if ($book->fetch()) {
$post = $app->request()->put();
$result = $book->update($post);
echo json_encode(array(
"status" => (bool)$result,
"message" => "Book updated successfully"
));
} else {
echo json_encode(array(
"status" => false,
"message" => "Book id $id does not exist"
));
}
});
// ... (rest of the code) ...
$ app-> request ()-> post ()
und $ app-> request ()-> put ()
post abgerufen bzw. Daten. Verwenden Sie für Browser-basierte Put-Anfragen ein verstecktes Feld _ method
mit Wert "put" in Ihrem Formular.
Bücher löschen:
Löschen Sie ein Buch nach ID:
delete("/book/:id", function ($id) use ($app, $db) {
$app->response()->header("Content-Type", "application/json");
$book = $db->books()->where("id", $id);
if ($book->fetch()) {
$result = $book->delete();
echo json_encode(array(
"status" => true,
"message" => "Book deleted successfully"
));
} else {
echo json_encode(array(
"status" => false,
"message" => "Book id $id does not exist"
));
}
});
// ... (rest of the code) ...
Die delete ()
Methode entfernt den Datenbank -Datensatz. Die map ()
Methode verarbeitet mehrere HTTP -Methoden auf einer einzelnen Route (hier nicht gezeigt).
Abschluss:
Dieser Artikel zeigt, dass ein grundlegender Restful -Webdienst mit Slim erstellt wird. Die Weiterentwicklung sollte eine robuste Fehlerbehandlung und die Eingabevalidierung umfassen. Der Quellcode (hier nicht enthalten) finden Sie in GitHub (Link nicht im Originaltext angegeben). Der FAQS -Abschnitt des Originaltextes wird weggelassen, da er grundlegende Informationen liefert, die durch SLIM -Dokumentation leicht verfügbar sind.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3