본문 바로가기
프로그래밍/Web

Laravel Inertia - Responses

by 사악신 2024. 1. 18.

Responses 응답

Creating responses 응답 생성하기

Inertia 응답을 생성하는 것은 간단합니다. 시작하려면, 컨트롤러나 라우트 내에서 Inertia::render() 메소드를 호출하고, 렌더링하고자 하는 JavaScript 페이지 컴포넌트의 이름과 페이지에 대한 props(데이터)를 제공하면 됩니다.

아래 예제에서, 단일 prop(event)을 Event/Show 페이지 컴포넌트에 전달합니다. 이 prop에는 네 개의 속성(id, title, start_date, description)이 포함됩니다.

use Inertia\Inertia;

class EventsController extends Controller
{
    public function show(Event $event)
    {
        return Inertia::render('Event/Show', [
            'event' => $event->only(
              'id',
              'title',
              'start_date',
              'description'
            ),
        ]);

        // 또는, inertia() 헬퍼를 사용할 수 있습니다...
        return inertia('Event/Show', [
            'event' => $event->only(
              'id',
              'title',
              'start_date',
              'description'
            ),
        ]);
    }
}

라라벨(Laravel) 애플리케이션에서 Event/Show 페이지는 일반적으로 resources/js/Pages/Event/Show.(js|vue|svelte) 파일에 해당합니다.

페이지가 빠르게 로드되도록, 페이지에 필요한 최소한의 데이터만 반환하세요. 또한, 컨트롤러에서 반환된 모든 데이터는 클라이언트 측에서 볼 수 있으므로, 민감한 정보는 생략하는 것이 중요합니다.

Root template data 루트 템플릿 데이터

애플리케이션의 루트 Blade 템플릿에서 prop 데이터에 액세스하고자 할 때가 있습니다. 예를 들어, 메타 설명 태그, 트위터 카드 메타 태그, 또는 페이스북 오픈 그래프 메타 태그를 추가하고 싶을 수 있습니다. 이 데이터는 $page 변수를 통해 액세스할 수 있습니다.

<meta name="twitter:title" content="{{ $page['props']['event']->title }}">

때때로 JavaScript 페이지/컴포넌트로 보내지 않을 데이터를 루트 템플릿에 제공하고 싶을 수도 있습니다. 이는 withViewData 메소드를 호출하여 수행할 수 있습니다.

return Inertia::render('Event', ['event' => $event])
    ->withViewData(['meta' => $event->meta]);

withViewData 메소드를 호출한 후에는 일반적으로 Blade 템플릿 변수에 액세스하는 것처럼 정의된 데이터에 액세스할 수 있습니다.

<meta name="description" content="{{ $meta }}">

Maximum response size 최대 응답 크기

클라이언트 측 히스토리 탐색을 가능하게 하기 위해, 모든 Inertia 서버 응답은 브라우저의 히스토리 상태에 저장됩니다. 그러나 일부 브라우저에서는 히스토리 상태에 저장할 수 있는 데이터의 크기에 한계가 있음을 유의해야 합니다.

예를 들어, Firefox 는 640k 문자의 크기 제한이 있으며, 이 한계를 초과하면 NS_ERROR_ILLEGAL_VALUE 오류가 발생합니다. 일반적으로 이는 애플리케이션 구축에 실제로 필요한 것보다 훨씬 많은 데이터입니다.

반응형

'프로그래밍 > Web' 카테고리의 다른 글

Laravel Inertia - Routing  (0) 2024.01.18
Laravel Inertia - Redirects  (0) 2024.01.18
Laravel Inertia - Pages  (0) 2024.01.18
Laravel Inertia Client-side 설치  (0) 2024.01.10
Laravel Inertia Server-side 설치  (0) 2024.01.10

댓글