§アクション、コントローラ、レスポンス
§アクションとは?
Play アプリケーションが受け取ったリクエストのほとんどは、Action
によって処理されます。
アクションは基本的にはリクエストを処理しクライアントへ送るレスポンスを生成する Java のメソッドです。
public static Result index() {
return ok("Got request " + request() + "!");
}
アクションは play.mvc.Result
型の値を返し、これはクライアントへ送信される HTTP レスポンスを表しています。上記の例では、ok
は コンテントタイプ text/plain のレスポンスボディを含む、ステータス 200 OK のレスポンスを生成します。
§コントローラ
コントローラは複数のアクションメソッドをまとめて play.mvc.Controller
を継承しただけのクラスです。
package controllers;
import play.*;
import play.mvc.*;
public class Application extends Controller {
public static Result index() {
return ok("It works!");
}
}
アクションを定義する最も簡単な構文は、上記したように Result
型の型を返す引数無しの static メソッドを定義するというものです。
アクションメソッドは引数を取る事も出来ます。
public static Result index(String name) {
return ok("Hello " + name);
}
これらの引数は Router
により解決され、リクエスト URL から値が入れられます。引数の値は URL のパスもしくは URL のクエリ文字列から抽出することができます。
§Results
簡単な Result から始めてみましょう。ステータスコード、 HTTP ヘッダ、そしてボディがクライアントに送信されるというものです。
これらの結果は play.mvc.Result
で定義されていて、そして play.mvc.Results
クラスは、前のセクションで使用した ok
メソッドのような標準的な HTTP の結果を返すためのいくつかのヘルパーを提供します。
public static Result index() {
return ok("Hello world!");
}
Result を作成する例をいくつかご紹介します。
Result ok = ok("Hello world!");
Result notFound = notFound();
Result pageNotFound = notFound("<h1>Page not found</h1>").as("text/html");
Result badRequest = badRequest(views.html.form.render(formWithErrors));
Result oops = internalServerError("Oops");
Result anyStatus = status(488, "Strange response type");
これらのヘルパーは全て play.mvc.Results
クラスで定義されています。
§リダイレクトもただの Result です
ブラウザを新しい URL へリダイレクトさせることも、ただの Result の一種です。違うのは、リダイレクトの Result はレスポンスボディを取らないということです。
リダイレクトを生成するヘルパーもいくつか用意されています。
public static Result index() {
return redirect("/user/home");
}
デフォルトでは、 303 SEE_OTHER
のステータスコードが使われていますが、別のステータスコードを指定する事もできます。
public static Result index() {
return temporaryRedirect("/user/home");
}
次ページ: HTTP ルーティング
このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。