개발/Play Framework

Play Framework 2.3.x ] Java - 1.1 Actions, Controllers and Results 번역

펭귀니 :) 2021. 9. 26. 20:13

업무상 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");
}