ホームページ >バックエンド開発 >PHPチュートリアル >Xiu Shen を使用して RESTful Web サービスを作成する_PHP チュートリアル
Hello World アプリケーションを作成するには、アプリケーション ディレクトリ内のデフォルトのindex.php ファイルを削除し、次のコードを含む新しいindex.php ファイルを作成します。
01 02 "Slim/Slim.php" が必要です;
スリム コンストラクターは、アプリケーション構成値の配列を受け入れます。モード、TEMPLATES.PATH を確認し、よく使用するいくつかの重要な構成を確認します。使用モードは、開発または運用、使用されるアプリケーション環境のように設定されます。 TEMPLATES.PATH は、使用するテンプレート ファイルの場所を設定します。 Slim は、デフォルトで Slim_View を使用してビューをレンダリングしますが、カスタム ビュー ハンドラーを作成し、それを使用して Slim 値をアタッチすることもできます。次の例は、新しいカスタム Slim インスタンス TEMPLATES.PATH を作成し、環境の開発モードを設定する方法を示しています。
1
2 $app = 新しい Slim(array(
3 「モード」 => 「開発」、
4 "TEMPLATES.PATH" => "./templates"
5));
Slim を使用したアプリの作成は、ルート作成の最も重要な部分です。ルーターは、URI を特定のリクエスト メソッドのコールバック関数にマップするのに役立ちます。 Slim は、異なる要件を同じ URI にマッピングするためのシンプルかつ直感的な方法を提供します。現在の URI とリクエスト メソッドに一致するコールバック関数を呼び出すか、一致しない場合は 404 エラーを生成します。ルートに参加した後、Slim インスタンスの run() メソッドを呼び出してアプリケーションを実行する必要があります。
さらに詳しく説明する前に、Slim を使用して単純なライブラリ管理 Web サービス アプリケーションを作成してみましょう。このアプリケーションでは、本書で詳しく説明されている Web サービス呼び出しを使用して、リスト、追加、削除、および更新を行うことができます。
次の表に、Web サービスをサポートするエンドポイントを示します:
データベースの対話には、代わりの ORM として Jakub Vrána によって作成された NotORM を使用します。これは、データベース データと対話するためのシンプルで直感的な API、PHP ライブラリを提供します。 NotORM は PHP の PDO 拡張機能を使用してデータベースにアクセスするため、PDO のインスタンスが NotORM のコンストラクターに渡されます。
1
2 「NotORM.php」が必要です;
3
4 $pdo = 新しい PDO($dsn, $username, $password);
5 $db = 新しい NotORM($pdo);
市販の書籍
01
02...
03 $app = 新しいスリム(
04 「モード」 => 「開発」、
05 "TEMPLATES.PATH' => "./templates"
06);
07
08 $app->get("/books", function () use ($app, $db) {
09 $books = array();
10 foreach ($db->books() as $book) {
11 $books[] = array(
12 "id" => $book["id"],
13 "タイトル" => $book["タイトル"],
14 "著者" => $book["著者"],
15 "概要" => $book["概要"]
16);
17 }
18 $app->response()->header("Content-Type", "application/json");
19 エコー json_encode($books);
20 });
() は、GET リクエストを指定された URI にルーティングする Slim のメソッドです。最初のパラメータは URI で、最後のパラメータはコールバック関数です。キーワードを使用すると、無名関数のスコープから外部変数にアクセスできます。
この関数では、データベースを反復処理して各レコードを返す書籍の配列を作成します ($DB->books() は、反復によって参照される書籍のテーブルを返します)。 「application/json」の Content-Type ヘッダーを含む応答を送信することで、エンコードされた書籍データの配列が出力されます。
次に、指定された ID を使用して書籍の詳細エンドポイントを作成しましょう:
01
02...
03 $app->get("/book/:id", function ($id) use ($app, $db) {
04 $app->response()->header("Content-Type", "application/json");
05 $book = $db->books()->where("id", $id);
06 if ($data = $book->fetch()) {
07 エコー json_encode(array(
)
08 "id" => $data["id"],
09 "タイトル" => $data["タイトル"],
10 "著者" => $data["著者"],
11 "概要" => $data["概要"]
12));
13 }
他14個{
15 echo json_encode(array(
16 "ステータス" => false、
17 "メッセージ" => "書籍 ID $id が存在しません"
18 ));
19 }
20 });
ここでは、書籍のID配送ルートというパラメータを追加しました。このルートを実行すると、Slim はパラメータ値を引数としてコールバック関数を呼び出します。
このパラメータは必須であることに注意してください。パラメータをオプションにする場合は、/book(/id) のように括弧内に置くことでパラメータをオプションにできますが、コールバック関数のパラメータを指定することはできません。この場合、コールバック関数に渡された引数を指定して func_get_args() を使用すると、それらを取得できます。
本を追加して編集する
次に、アドレス エンドポイントに書籍情報の追加と更新を処理させましょう。 post() メソッドを使用して新しいデータを追加し、post() メソッドを使用して既存のデータを更新します。
01
02...
03 $app->post("/book", function () use($app, $db) {
04 $app->response()->header("Content-Type", "application/json");
05 $book = $app->request()->post();
06 $result = $db->books->insert($book);
07 echo json_encode(array("id" => $result["id"]));
08 });
09
10 $app->put("/book/:id", function ($id) use ($app, $db) {
11 $app->response()->header("Content-Type", "application/json");
12 $book = $db->books()->where("id", $id);
13 if ($book->fetch()) {
14 $post = $app->request()->put();
15 $result = $book->update($post);
16 echo json_encode(array(
17 "ステータス" => (bool)$result,
18 "メッセージ" => "本は正常に更新されました"
19));
20 }
他21個{
22 echo json_encode(array(
23 "ステータス" => false、
24 "メッセージ" => "書籍 ID $id が存在しません"
25 ));
26 }
27 });
アプリケーション request() の場合は、現在のリクエスト オブジェクト (POST を使用した Slim_Http_Request) を返すか、データを置きます。このオブジェクトの POST() メソッドの POST 値は、POST 値の POST() メソッドを使用して取得できます。ここでは、POST と PUT の両方のデータ情報テーブルにキーと値のペアとして列名があると仮定します。実際のアプリケーションでは、検証とエラー処理を追加する必要がありますが、ここでは簡単にするために省略しています。
ブラウザから Slim アプリにアクセスする予定がある場合、PUT リクエストを簡単に行うことはできません。通常、ブラウザは HTML 経由でメソッドを公開しません。この問題を解決するために、Slim には、POST リクエストが非表示フィールドに配置されるフォームをオーバーライドできる機能が用意されています。フィールドの名前は、「_method」に「PUT」の値を設定する必要があります。
1 <フォームアクション="#" メソッド="投稿">
2
3 タイトル:
4 著者:
5 概要:
6
7
8
書籍を削除する
次に必要なのは、Web サービスでリストのエンドポイントを追加、編集、予約し、書籍のエンドポイントを削除することです。削除する本の ID を受け入れ、対応するレコードをデータベースから削除する必要があります。
01
02...
03 $app->delete("/book/:id", function ($id) use($app, $db) {
04 $app->response()->header("Content-Type", "application/json");
05 $book = $db->books()->where("id", $id);
06 if ($book->fetch()) {
07 $result = $book->delete();
08 echo json_encode(array(
)
09 "ステータス" => true、
10「メッセージ」=>「本は正常に削除されました」
11));
12 }
他13個{
14 echo json_encode(array(
15 "ステータス" => false、
16 "メッセージ" => "書籍 ID $id が存在しません"
17));
18 }
19 });
すべてはとてもシンプルです。まず、本書ですでに詳しく説明したのと同じように、データベースから指定された ID に対応する行を取得します。行オブジェクトに対して呼び出された delete() メソッドは、データベースからレコードを削除します。 www.2cto.com
私たちはすべての書籍に関連する必要なエンドポイントを確立しました。場合によっては、複数のリクエスト メソッドに応答する単一のルートが必要になることがあります。これは、map() の Slim メソッドを使用して実装できます。
まとめ
この記事では、Slim Framework を使用した RESTful Web サービスの作成について説明しました。これで、それほど苦労せずに独自の Web サービス アプリケーションを作成できるはずです。
もちろん、ここで説明したものよりも簡単に実行できることはたくさんあります。多くのパラメータ、データ検証などのルートを設定できます。したがって、Slim や NoORM などのツールを掘り下げて使用して、目標の達成に役立ててください。