HTTPメソッドごとのルーティング登録
まず、ルーティング登録の復習から始めましょう。前回紹介したルーティング登録の構文を再掲載します。
$app->get(ルーティングパターン, 対応するコールバック関数);
ルーティング登録の構文は、\Slim\Appクラスのget()メソッドを使って登録するというものです。この登録方法を紹介した際、勘のいい人は気づいたかもしれませんが、このget()メソッドというのは、HTTPのGETメソッドに対応しています。もし、前回登録したルーティングパターン「/hello」に対応するURL
にPOSTメソッドでアクセスした場合、図1の画面が表示されてしまいます。
メッセージにあるように、POSTメソッドは受け付けないようになっていますね。実は、Slimのルーティング登録は、HTTPの各メソッドに合わせて登録メソッドが異なるのです。どういったメソッドがあるのか、表1にまとめておきます。
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の太字の部分です。
<?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の通りです。
<!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つ表示されます。
この[GO!]ボタンをクリックすると、リスト1の(1)で登録した「/helloPost」の処理が実行され、図3の画面が表示されます。
[Note]Postman
ここでは、POSTでアクセスするためにHTML画面を1枚作成しました。もともと画面表示が連続するWebシステムの場合ならいいのですが、例えば、Web APIなど画面を伴わないWebシステムでPOSTアクセスの確認のためにHTML画面を作成するのは手間です。さらに、GETとPOST以外のHTTPメソッドを確認する場合、そもそもformタグは使えません。そういった場合に便利なアプリとしてPostmanがあります。Postmanを使うと、手軽にHTTPアクセスの確認ができます。