업무상 Play Framework를 사용하게 되었다.
따라서, 2.3.x 버전의 Documents를 번역해보고자 한다 :)
오류가 있다면 언제든지 알려주세요.
링크 : https://www.playframework.com/documentation/2.3.x/JavaActions
위치
Play for Java Developers
ㄴ Main Concepts
ㄴ 1. HTTP programming
ㄴ 1.1 Actions, Controllers and Results
Actions, Controllers and Results
What is an Action?
Play application이 받은 대부분의 요청은 Action
에 의해 처리된다.
action은 기본적으로 request 파라미터를 처리하고, 클라이언트에게 결과를 생성하는 자바 메소드다.
public static Result index() {
return ok("Got request " + request() + "!");
}
action은 웹 클라이언트에게 HTTP 응답을 표현하는 play.mvc.Result
값을 반환시킨다. 예를 들어, ok
는 textp/plain response body를 포함하는 200 OK를 구성한다.
Controllers
controller는 일부 action 메소드를 그룹화하는 play.mvc.Controller
를 확장하는 클래스 그 이상 그 이하도 아니다.
package controllers;
import play.*;
import play.mvc.*;
public class Application extends Controller {
public static Result index() {
return ok("It works!");
}
}
위에서 볼 수 있듯이, action을 정의하기 위한 제일 간단한 방법은 Result
를 반환하는 인자없는 static 메소드로 작성할 수 있다.
action 메소드는 인자도 가질 수 있다.
public static Result index(String name) {
return ok("Hello " + name);
}
이러한 인자는 Router
나 request URL에 value로 채워진다. 인자 값은 URL path나 URL 쿼리 스트링에서 얻어진다.
Results
웹 클라이언트에 보낼 HTTP 헤더와 바디의 구성을 status code로 하여 HTTP result를 간단하게 시작해보자.
이러한 results는 play.mvc.Result
에 의해 정의되고, play.mvc.Results
클래스는 ok
메소드와 같은 표준 HTTP results를 사용할 수 있는 몇몇의 helpers를 제공한다.
public static Result index() {
return ok("Hello world!");
}
여기 몇개의 다양한 results의 예제들이 있다.
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");
이러한 helpers은 모두 play.mvc.Results
클래스 안에서 찾을 수 있다.
Redirects are simple results too
브라우저를 새로운 URL로 리다이렉팅하는 것은 간단한 result의 종류이다. 그러나, 이러한 result 타입은 response body를 가지지 않는다.
redirect results를 생성하는 몇개의 helpers:
public static Result index() {
return redirect("/user/home");
}
303 SEE_OTHER
응답 형식을 사용하기 위한 기본값이다. 보다 구체적인 status code도 지정할 수 있다.
public static Result index() {
return temporaryRedirect("/user/home");
}