§アクション、コントローラ、Results
§アクションとは何か?
Play アプリケーションが受け取ったリクエストのほとんどは、 Action
によって処理されます。
アクションは基本的にリクエストを処理し、クライアントへ送るレスポンスを生成する Java のメソッドです。
public 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 Result index() {
return ok("It works!");
}
}
アクションを定義する最も簡単な構文は、上記したように Result
型を返す引数無しの static メソッドを定義するというものです。
アクションメソッドは引数を取る事も出来ます。
public Result index(String name) {
return ok("Hello " + name);
}
これらの引数は Router
により解決され、リクエスト URL から値が入れられます。引数の値は URL のパスもしくは URL のクエリ文字列から抽出することができます。
§Results
簡単な Result から始めてみましょう。ステータスコード、 HTTP ヘッダ、そしてボディがクライアントに送信されるというものです。
これらの結果は play.mvc.Result
で定義されていて、そして play.mvc.Results
クラスは、前のセクションで使用した ok
メソッドのような標準的な HTTP の結果を返すためのいくつかのヘルパーを提供します。
public 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 Result index() {
return redirect("/user/home");
}
デフォルトでは、 303 SEE_OTHER
のステータスコードが使われていますが、別のステータスコードを指定する事もできます。
public Result index() {
return temporaryRedirect("/user/home");
}
Next: HTTP ルーティング
このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。