SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

軽量PHPフレームワークSlimを習得しよう

さまざまなHTTPメソッドに対応した、Slimルーティングの登録方法を知ろう

軽量PHPフレームワークSlimを習得しよう 第3回

  • このエントリーをはてなブックマークに追加

 本連載では軽量PHPフレームワークであるSlimを紹介していきます。フレームワークといえば、重厚長大なもの、いわゆるフルスタックフレームワークが多い中で、あえて軽量フレームワークを取り上げます。軽量ゆえのメリットを味わっていただこうと思います。前回は、実際にSlimを動作させるためのプロジェクトを作成し、初めてのSlimアプリとして「Hello World!」の表示を行いながらSlimの動作原理を紹介しました。その動作原理の中心となるのがルーティング、その登録方法も紹介しました。今回は、そのルーティング登録の続きとして、さまざまな登録方法を紹介していきます。

  • このエントリーをはてなブックマークに追加

HTTPメソッドごとのルーティング登録

 まず、ルーティング登録の復習から始めましょう。前回紹介したルーティング登録の構文を再掲載します。

[構文]ルーティング登録
$app->get(ルーティングパターン, 対応するコールバック関数);

 ルーティング登録の構文は、\Slim\Appクラスのget()メソッドを使って登録するというものです。この登録方法を紹介した際、勘のいい人は気づいたかもしれませんが、このget()メソッドというのは、HTTPのGETメソッドに対応しています。もし、前回登録したルーティングパターン「/hello」に対応するURL

 にPOSTメソッドでアクセスした場合、図1の画面が表示されてしまいます。

図1:get()で登録したURLにPOSTでアクセスした場合
図1:get()で登録したURLにPOSTでアクセスした場合

 メッセージにあるように、POSTメソッドは受け付けないようになっていますね。実は、Slimのルーティング登録は、HTTPの各メソッドに合わせて登録メソッドが異なるのです。どういったメソッドがあるのか、表1にまとめておきます。

表1:HTTPメソッドごとのバリエーション
HTTPメソッド  Appクラスのメソッド
GET $app->get(…);
POST $app->post(…);
PUT $app->put(…)
DELETE $app->delete(…)
OPTIONS $app->options(…)
PATCH $app->patch(…)

 なお、表1においてAppクラスのメソッドの引数は全て「…」と省略表記にしていますが、これらは全て、get()と同じく「ルーティングパターン」「対応するコールバック関数」の2個の引数を必要とします。

 サンプルとして、POSTでアクセスした場合に画面に文字列を表示させるコードを、前回作成したindex.phpに追記しましょう。追記するのは、リスト1の太字の部分です。

[リスト1]firstslim/src/public/index.php
<?php
〜省略〜
$app = new App();
$app->get("/hello",
	〜省略〜
);
$app->post("/helloPost",  // (1)
	function(Request $request, Response $response, array $args): void
	{
		print("<h1>POSTメソッドでこんにちは!</h1>");
	}
);
$app->run();

 リスト1の(1)で、$appのpost()メソッドを使って、新たなルーティングを登録しています。追加したルーティングパターンは「/helloPost」なので、この処理を呼び出すURLは

  • http://localhost/firstslim/src/public/helloPost

 です。ただし、直接ブラウザから上記URLにアクセスしてもダメです。その場合はGETメソッドでのアクセスとなるからです。そこで、POSTでアクセスするために、formタグを記述したHTML画面を1枚作成しましょう。リスト2の通りです。

[リスト2]firstslim/src/public/showPostHello.html
<!DOCTYPE html>
<html lang="ja">
	<head>
		<meta charset="UTF-8">
		<title>/helloPostにPOSTするファイル</title>
	</head>
	<body>
		<form action="/firstslim/src/public/helloPost" method="post">
			<button type="submit">GO!</button>
		</form>
	</body>
</html>

 リスト2を表示させるURLは、

 なので、このURLにアクセスしてください。図2のようにボタンが1つ表示されます。

図2:リスト2を表示させた画面
図2:リスト2を表示させた画面

 この[GO!]ボタンをクリックすると、リスト1の(1)で登録した「/helloPost」の処理が実行され、図3の画面が表示されます。

図3:「/helloPost」の処理結果画面
図3:「/helloPost」の処理結果画面

[Note]Postman

 ここでは、POSTでアクセスするためにHTML画面を1枚作成しました。もともと画面表示が連続するWebシステムの場合ならいいのですが、例えば、Web APIなど画面を伴わないWebシステムでPOSTアクセスの確認のためにHTML画面を作成するのは手間です。さらに、GETとPOST以外のHTTPメソッドを確認する場合、そもそもformタグは使えません。そういった場合に便利なアプリとしてPostmanがあります。Postmanを使うと、手軽にHTTPアクセスの確認ができます。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
複数のHTTPメソッドに対応できるルーティング登録

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
軽量PHPフレームワークSlimを習得しよう連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 齊藤 新三(サイトウ シンゾウ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook<個人紹介>WINGSプロジェクト所属のテクニカルライター。Web系製作会社のシステム部門、SI会社を経てフリーランスとして独立。屋号はSarva(サルヴァ)。HAL大阪の非常勤講師を兼務。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11401 2019/03/11 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング