GlobalSettings in play! framework

Spring을 이용할 때 Interceptor라는 것을 이용해서 http 요청을 실제 컨트롤러로 보내기 전에 필요한 작업들을 수행하거나 했는데 play에도 그런 것을 만들 수 있다.
GlobalSettings 파일을 이용해서 http 요청을 클라이언트와 컨트롤러 사이에서 가로채 필요한 작업들을 수행할 수 있도록 되어 있다.
의외로 방법은 간단. 문서에 나와있는 것처럼 Global.java 라는 파일을 java application 폴더에 만든 뒤에 GlobalSettings 파일을 상속받고 기타 필요한 메소드들을 오버라이딩하면 된다.

예를 들어. 아래와 같이 할 수 있다.
@Override
@SuppressWarnings("rawtypes")
public Action onRequest(Request request, Method actionMethod) {

 String user_id = request.queryString().get("access_token")[0].split("_")[1];
 request.setUsername(user_id);
 
        return super.onRequest(request, actionMethod);
    }

클라이언트에서 서버로 어떤 요청을 보내게 되면 Global 클래스에 있는 onRequest를 오버라이딩한 부분을 지나게 되는데 그때 파라미터로 넘어온 request에서 queryString에서 access_token을 뽑아 그 안의 user_id를 request 객체의 username에 세팅하는 것이다.
이후에 컨트롤러에서도 request() 함수에서 username을 꺼내쓰거나 할 수 있다.
간단한 예이므로 다양하게 활용할 수 있을 것 같다.

댓글 없음:

댓글 쓰기