응답
Response 사용의 제한
XE의 기본 프레임워크인 라라벨에서는 대부분의 라우트나 컨트롤러 액션에서 Illuminate\Http\Response
의 인스턴스나 뷰를 반환하도록 합니다.
하지만 XE는 웹 브라우저로 html 형식의 응답을 보낼 때, 스킨과 테마를 적용한 후 보내야 합니다. 특별한 경우가 아니라면 컨트롤러에서 Illuminate\Http\Response
인스턴스나 뷰를 직접 반환(return)하지 마십시오. 대신, 프레젠터를 사용하여 반환하십시오. 반드시 프레젠터를 사용해야만 테마와 스킨이 적용되고 위젯 또한 정상적으로 출력됩니다.
리다이렉트
일반적으로 리다이렉트 Response는 Illuminate\Http\RedirectResponse
클래스의 인스턴스이며, 사용자를 다른 URL로 리다이렉트하는 데 필요한 적절한 헤더를 포함하고 있습니다.
리다이렉트 반환하기
RedirectResponse
인스턴스를 생성하는 데는 몇 가지 방법이 있습니다. 가장 간단한 방법은 redirect
헬퍼 함수를 사용하는 것입니다. 테스트를 진행할 때 리다이렉트 Response를 생성하는 모킹(Mock)은 일반적으로 잘 하지 않기 때문에, 대부분의 경우에 헬퍼 함수를 사용하게 됩니다.
리다이렉트에 플래시 데이터와 함께 반환하기
새로운 URL로 리다이렉트 이동하고 플래시 데이터를 세션에 저장 하는 것은 일반적으로 동시에 진행됩니다. 따라서 편의성을 높이기 위해 RedirectResponse
인스턴스를 생성하고 동시에 메소드 체인을 통해 플래시 데이터를 세션에 저장할 수 있습니다:
이전 URL로 리다이렉트
예를 들어, 폼 전송 후에, 사용자를 이전 URL로 리다이렉트 시키고자 하는 경우가 있을 수 있습니다. 이런 경우에는 back
메소드를 사용하면 됩니다:
이름이 지정된 라우트로 리다이렉트 하기
전달 인자 없이 redirect
헬퍼 함수를 호출할 때에는 Illuminate\Routing\Redirector
의 인스턴스가 반환됩니다. 따라서 Redirector
인스턴스의 메소드를 사용할 수 있습니다. 예를 들어, 이름지 지정된 라우트로 이동하는 RedirectResponse
를 생성하고자 한다면 route
메소드를 사용할 수 있습니다:
이름이 지정된 라우트로 파라미터와 함께 리다이렉트 하기
라우트에 전달해야 할 파라미터가 있다면 route
메소드의 두 번째 인자로 전달하면 됩니다.
이름지 지정된 라우트로 파라미터 이름과 함께 리다이렉트 하기
컨트롤러 액션으로 리다이렉트 하기
이름이 지정된 라우트로 이동하는 RedirectResponse
인스턴스를 생성하는것과 비슷하게 컨트롤러 액션으로 리다이렉션 할 수 있습니다.
주의:
URL:setRootControllerNamespace
를 통해서 컨트롤러의 루트 네임스페이스가 지정되었다면, 전체 네임 스페이스를 지정할 필요가 없습니다.
컨트롤러 액션으로 파라미터와 함께 리다이렉트 하기
컨트롤러 액션으로 파라미터 이름과 함께 리다이렉트 하기
기타 Response
response
헬퍼 함수를 사용하여 편리하게 다른 타입의 response 인스턴스를 생성할 수도 있습니다. response
헬퍼함수를 인자없이 호출하게 되면 Illuminate\Contracts\Routing\ResponseFactory
contract를 반환합니다. 이 contract는 response를 생성하기 위한 다양한 메소드를 제공합니다.
JSON response 생성하기
json
메소드는 헤더의 Content-Type
을 자동으로 application/json
으로 지정합니다:
JSONP Response 생성하기
파일 다운로드 Response 생성하기
참고: 파일 다운로드를 관리하는 Symfony의 HttpFoundation에서 다운로드 할 파일의 이름이 ASCII 파일 이름임을 필요로 하고 있습니다.
Last updated