응답이란
컨트롤러나 라우트는 사용자의 브라우저에 어떤 형태로든 응답을 반환해야 합니다. Laravel은 문자열·배열·뷰·리다이렉트·JSON 등 다양한 형식의 응답을 단순하게 반환할 수 있는 구조를 제공합니다.기본 응답
문자열 반환
가장 단순한 응답은 문자열 반환입니다. Laravel은 자동으로 적절한 HTTP 응답으로 변환합니다.배열 반환
배열을 반환하면 Laravel은 그것을 JSON 형식으로 자동 변환하여 응답합니다.Eloquent 모델이나 컬렉션을 그대로 return하면 JSON 형식으로 자동 변환됩니다. API를 손쉽게 만들 수 있어 자주 사용되는 패턴입니다.
Eloquent 모델 반환
Response 객체
response() 헬퍼를 사용하면 HTTP 상태 코드나 헤더를 지정한 상세한 응답을 반환할 수 있습니다.
response()의 첫 번째 인수는 응답의 본문, 두 번째 인수는 HTTP 상태 코드입니다.
자주 사용되는 HTTP 상태 코드
뷰 응답
컨트롤러에서 Blade 템플릿을 표시하려면view()를 사용합니다.
이것이 웹 애플리케이션에서 가장 일반적인 응답입니다.
view()의 첫 번째 인수는 뷰 이름, 두 번째 인수는 뷰로 전달할 데이터 배열입니다.
response()->view()로 상세 제어
상태 코드나 헤더도 함께 지정하고 싶은 경우에는 response()->view()를 사용합니다.
리다이렉트
기본 리다이렉트
redirect() 헬퍼는 리다이렉트 응답을 반환합니다.
폼 전송 후 다른 페이지로 유도할 때 자주 사용합니다.
이름 지정 라우트로의 리다이렉트
route() 함수를 사용하면 URL을 직접 작성하지 않고 라우트 이름으로 리다이렉트 대상을 지정할 수 있습니다.
URL이 바뀌어도 수정이 불필요해지므로 이름 지정 라우트를 활용하는 것이 베스트 프랙티스입니다.
직전 페이지로 돌아가기
back()으로 사용자가 직전에 있던 페이지로 돌아갈 수 있습니다.
유효성 검증 실패 시의 리다이렉트에 자주 사용됩니다.
플래시 메시지가 포함된 리다이렉트
with()로 세션에 메시지를 붙여 리다이렉트할 수 있습니다.
폼 전송 성공 후의 메시지 표시에 편리합니다.
JSON 응답
API를 만드는 경우에는response()->json()을 사용해 JSON 응답을 반환합니다.
Content-Type: application/json 헤더가 자동으로 설정됩니다.
단순히 배열이나 Eloquent 모델을 return하는 것만으로도 JSON 응답이 되지만,
response()->json()을 사용하면 상태 코드나 헤더를 세밀하게 제어할 수 있습니다.응답 헤더
header() 메서드로 응답에 HTTP 헤더를 추가할 수 있습니다.
withHeaders()를 사용합니다.
실전 예시: 컨트롤러에서의 구분 사용
용도에 맞게 응답을 구분 사용하는 예시를 정리한 것입니다.1
라우트 정의
2
컨트롤러 구현
다음 단계
유효성 검증
응답을 반환하기 전에 입력 데이터를 유효성 검증으로 검사하는 방법을 확인합니다.