ホームページ > バックエンド開発 > PHPチュートリアル > PHPマスター| SlimでRestful Webサービスを書く

PHPマスター| SlimでRestful Webサービスを書く

Lisa Kudrow
リリース: 2025-02-26 09:13:10
オリジナル
639 人が閲覧しました

PHP Master | Writing a RESTful Web Service with Slim

このSitePointシリーズは、REST原則を探りました。 この記事では、Sinatra(Ruby)に触発されたPHPマイクロフレームワークであるSlimを使用して、Restful Webサービスの構築を示しています。 ルーティング、リクエスト/応答処理、最小限のビューサポートなどのコアコンポーネントを備えたSlimの軽量性は、単純なREST APIに最適です。

重要な概念:

    Slimは、PHP 5.2と(5.3)の機能的プログラミングスタイルの両方をサポートする、簡単なRestful Servicesに最適なPHPマイクロフレームワークです。
  • ルーティング特定のHTTPメソッドのコールバック関数にURIをマップします。 Slimは、同じURIの複数のメソッドを効率的に処理します
  • ライブラリ管理アプリケーションの例は、Webサービスの通話を介して書籍の詳細のリスト、追加、削除、更新を紹介します。 Notorm、軽量PHPデータベースライブラリであるNotormは、データベースインタラクションを処理します
  • エンドポイントは、
  • 、および
  • のメソッドをそれぞれ作成、更新、削除する方法です。
  • post()put()スリムの導入:delete()
スリムをダウンロードすることから始めます。 この例では、5.3スタイルを使用しています。

を作成します

ブラウザで

にアクセスして、「Hello Slim World」を表示します。 SLIM Autoloads必要なファイル。 SLIMコンストラクターは、構成を受け入れます(例:index.php

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

$app = new Slim();

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

$app->run();
?>
ログイン後にコピー
ログイン後にコピー
)。

環境(開発/生産)を設定し、index.phpテンプレートディレクトリを指定します。 カスタムビューハンドラーは、デフォルトMODEを置き換えることができます。例:TEMPLATES.PATH VIEW MODEルート作成が重要です。 ルートは、httpメソッドに基づいて機能をコールバックにマッピングします。 Slimは、最初のマッチングルートを優先します。比類のないリクエストにより、404エラーが発生します。 ルートを定義した後、TEMPLATES.PATHに電話してアプリケーションを開始します。Slim_View

<?php
$app = new Slim(array(
    "MODE" => "development",
    "TEMPLATES.PATH" => "./templates"
));
?>
ログイン後にコピー
ログイン後にコピー
ライブラリサービスの構築:

run()

ライブラリ管理サービスを作成しましょう。 Notormはデータベースの相互作用を簡素化します(PDOインスタンスが必要です)

掲示書:

このエンドポイントには、すべての書籍がJSON形式でリストされています:
<?php
require "NotORM.php";

$pdo = new PDO($dsn, $username, $password); // Replace with your database credentials
$db = new NotORM($pdo);
?>
ログイン後にコピー

処理getリクエスト。

匿名関数内の外部変数にアクセスできます。応答ヘッダーは

に設定されており、本のデータは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) ...
ログイン後にコピー
本の詳細を取得:

get() use IDによる本を取得:application/json

ルートパラメーターは、コールバック関数に渡されます。 オプションのパラメーターはを使用します。 明示的なコールバック引数のないオプションのパラメーターの場合、

を使用します

<?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) ...
ログイン後にコピー
ブックの追加と編集:

:id

post()は追加し、put()は書籍:

を更新します
<?php
require "Slim/Slim.php";

$app = new Slim();

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

$app->run();
?>
ログイン後にコピー
ログイン後にコピー

$app->request()->post()および$app->request()->put()それぞれデータを取得してデータを配置します。 ブラウザベースのリクエストの場合は、フォームに「値「put」を持つ隠されたフィールド_METHODを使用してください。

本の削除:

IDによる本を削除:

<?php
$app = new Slim(array(
    "MODE" => "development",
    "TEMPLATES.PATH" => "./templates"
));
?>
ログイン後にコピー
ログイン後にコピー

メソッドはデータベースレコードを削除します。 delete()メソッドは、単一のルートで複数のhttpメソッドを処理します(ここには示されていません)。 map()

結論:

この記事では、Slimで基本的なRestful Webサービスを構築することを示しています。 さらなる開発には、堅牢なエラー処理と入力検証が含まれている必要があります。 ソースコード(ここには含まれていません)は、Github(元のテキストでは提供されていないリンク)にあります。 元のテキストのFAQセクションは、Slimのドキュメントを通じてすぐに利用できる基本情報を提供するため、省略されています。

以上がPHPマスター| SlimでRestful Webサービスを書くの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート