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

Laravel Inertia - Redirects

by 사악신 2024. 1. 18.

리다이렉트

Inertia를 사용하여 non-GET 요청을 수동으로 하거나 <Link> 요소를 통해 수행할 때, 항상 적절한 Inertia 리다이렉트 응답으로 응답하는 것이 중요합니다.

예를 들어, 컨트롤러가 새로운 사용자를 생성하는 경우, "store" 엔드포인트는 사용자 "index" 페이지와 같은 표준 GET 엔드포인트로 리다이렉트되어야 합니다. Inertia는 이 리다이렉트를 자동으로 따라가고 페이지를 그에 맞게 업데이트합니다.

class UsersController extends Controller
{
    public function index()
    {
        return Inertia::render('Users/Index', [
            'users' => User::all(),
        ]);
    }

    public function store(Request $request)
    {
        User::create(
            $request->validate([
                'name' => ['required', 'max:50'],
                'email' => ['required', 'max:50', 'email'],
            ])
        );

        return to_route('users.index');
    }
}

303 응답 코드

PUT, PATCH, 또는 DELETE 요청 후에 리다이렉트하는 경우, 303 응답 코드를 사용해야 합니다. 그렇지 않으면 이후 요청이 GET 요청으로 처리되지 않습니다. 303 리다이렉트는 302 리다이렉트와 매우 유사하지만, 후속 요청이 명시적으로 GET 요청으로 변경됩니다.

저희가 제공하는 공식 서버 측 어댑터를 사용하는 경우, 모든 리다이렉트는 자동으로 303 리다이렉트로 변환됩니다.

외부 리다이렉트

Inertia 요청을 처리하는 동안 외부 웹사이트 또는 앱 내의 다른 non-Inertia 엔드포인트로 리다이렉트할 필요가 있을 때가 있습니다. 이는 서버 측에서 window.location 방문을 시작하여 Inertia::location() 메소드를 사용함으로써 수행할 수 있습니다.

return Inertia::location($url);

Inertia::location() 메소드는 409 Conflict 응답을 생성하고 목적지 URL을 X-Inertia-Location 헤더에 포함합니다. 클라이언트 측에서 이 응답을 받으면, Inertia는 자동으로 window.location = url 방문을 수행합니다.

반응형

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

Laravel Inertia - Title & meta  (0) 2024.01.18
Laravel Inertia - Routing  (0) 2024.01.18
Laravel Inertia - Responses  (0) 2024.01.18
Laravel Inertia - Pages  (0) 2024.01.18
Laravel Inertia Client-side 설치  (0) 2024.01.10

댓글