라라벨 - 라우팅: 초보자 가이드

안녕하세요, 미래의 라라벨 개발자 여러분! 오늘 우리는 라라벨 라우팅의 세계를 탐험하기 시작할 것입니다. 친절한 이웃의 컴퓨터 선생님으로서, 저는 이 기본 개념을 이해하도록 안내해 드릴 것입니다. 그럼 커피(또는 차, 당신이 좋아하는 것)를 한 잔 마시고, 함께 뛰어들어 보겠습니다!

Laravel - Routing

라우팅이란 무엇인가요?

시작하기 전에, 라우팅이 정확히 무엇인지 이해해 보겠습니다. 상상해 보세요, 당신이 큰 도서관(인터넷)에 있고, 특정 책(웹 페이지)을 찾고 싶습니다. 도서관 사서(라우터)가 당신이 찾는 정확한 책을 찾아주는 것입니다. 웹 개발에서 라우팅은 이와 같은 사서 역할을 하며, 웹 요청을 애플리케이션의 정확한 부분으로 yönlendirir.

기본 라우팅

그럼 기본적인 것으로 시작해 보겠습니다. 라라벨에서 라우팅은 routes/web.php 파일에서 처리됩니다. 이 파일에서 우리는 애플리케이션이 다양한 URL 요청에 어떻게 응답해야 하는지 알려줍니다.

간단한 라우트

여기 가장 간단한 형태의 라우트가 있습니다:

Route::get('/', function () {
return 'Hello, World!';
});

이를 분해해 보겠습니다:

  • Route::get()은 라라벨이 GET 요청에 응답하도록 합니다.
  • 첫 번째 매개변수 '/'은 URL 경로입니다(이 경우, 홈 페이지입니다).
  • 두 번째 매개변수는 브라우저로 돌려보내야 할 것을 반환하는 함수입니다.

웹사이트의 홈 페이지를 방문할 때 "Hello, World!"가 표시됩니다.

뷰로 이동하는 라우트

보통, 단순한 텍스트를 반환하는 대신 전체 HTML 페이지를 반환하고 싶습니다. 라라벨은 이를 간편하게 만들어줍니다:

Route::get('/welcome', function () {
return view('welcome');
});

이 라우트는 누군가가 /welcome를 방문할 때 welcome 뷰를 반환합니다. 뷰는 resources/views 디렉토리에 저장된 HTML 템플릿입니다.

컨트롤러를 사용하는 라우트

애플리케이션이 커지면서 코드를 더 잘 정리하기 위해 컨트롤러를 사용하고 싶을 것입니다:

Route::get('/users', 'UserController@index');

이 라우트는 누군가가 /users를 방문할 때 UserControllerindex 메서드를 호출합니다.

라우트 매개변수

이제 더 흥미로운 부분으로 넘어가보겠습니다. URL에 동적 세그먼트를 처리하고 싶다면 어떻게 하나요?

기본 매개변수

Route::get('/user/{id}', function ($id) {
return 'User '.$id;
});

이 라우트는 /user/1, /user/2 등과 같은 URL을 일치시킵니다. URL의 {id}은 함수에 전달되는 변수가 됩니다.

선택적 매개변수

occasionally, a parameter might be optional. We can handle this too:

Route::get('/user/{name?}', function ($name = 'John') {
return 'Hello, '.$name;
});

이 라우트는 /user/user/Jane 모두에 대해 작동합니다. 이름이 제공되지 않으면 기본적으로 'John'을 사용합니다.

매개변수 제약

우리는 매개변수에 정규 표현식을 사용하여 제약을 추가할 수도 있습니다:

Route::get('/user/{id}', function ($id) {
return 'User '.$id;
})->where('id', '[0-9]+');

이 라우트는 id가 하나 이상의 숫자로 구성되는 경우에만 일치합니다.

명명된 라우트

명명된 라우트를 사용하면 URL 대신 라우트 이름을 참조할 수 있습니다. 이는 애플리케이션에서 URL이나 리디렉션을 생성할 때 특히 유용합니다.

명명된 라우트 정의

Route::get('/user/profile', function () {
//
})->name('profile');

명명된 라우트 사용

라우트가 명명되면 다음과 같이 URL이나 리디렉션을 생성할 수 있습니다:

// URL 생성...
$url = route('profile');

// 리디렉션 생성...
return redirect()->route('profile');

이는 프로필 페이지의 URL을 변경해야 할 때 매우 유용합니다. 라우트 정의를 변경하면 모든 참조가 자동으로 새 URL을 사용하게 됩니다.

라우트 그룹

애플리케이션이 커지면서 동일한 미들웨어나 접두사를 여러 라우트에 적용하고 싶을 수 있습니다. 라라벨은 이를 그룹으로 처리할 수 있습니다:

Route::middleware(['auth'])->group(function () {
Route::get('/dashboard', function () {
// 인증 필요...
});

Route::get('/account', function () {
// 인증 필요...
});
});

이는 auth 미들웨어를 /dashboard/account 라우트 모두에 적용합니다.

라우트 메서드

라라벨은 모든 표준 HTTP 동사에 대한 라우팅을 지원합니다. 빠른 참조 표가 아래와 같습니다:

HTTP 동사 라우트 메서드
GET Route::get()
POST Route::post()
PUT Route::put()
PATCH Route::patch()
DELETE Route::delete()
OPTIONS Route::options()

또한, 단일 라우트로 여러 HTTP 동사에 응답할 수도 있습니다:

Route::match(['get', 'post'], '/', function () {
//
});

Route::any('/', function () {
//
});

이제 라라벨 라우팅의 첫 걸음을 내셨습니다. 연습이 완벽을 이루는 길입니다. 다양한 라우트를 실험해 보지 마세요.

마지막으로, 작은 라우팅 gag을 드릴게요: 왜 개발자가 망가졌을까요? 그는 모든 캐시를 사용했기 때문입니다! ?

행복한 코딩을 하시고, 여러분의 라우트가 항상 원하는 곳으로 이끌어주기를 바랍니다!

Credits: Image by storyset