라라벨 - 라우팅: 초보자 가이드
안녕하세요, 미래의 라라벨 개발자 여러분! 오늘 우리는 라라벨 라우팅의 세계를 탐험하기 시작할 것입니다. 친절한 이웃의 컴퓨터 선생님으로서, 저는 이 기본 개념을 이해하도록 안내해 드릴 것입니다. 그럼 커피(또는 차, 당신이 좋아하는 것)를 한 잔 마시고, 함께 뛰어들어 보겠습니다!
라우팅이란 무엇인가요?
시작하기 전에, 라우팅이 정확히 무엇인지 이해해 보겠습니다. 상상해 보세요, 당신이 큰 도서관(인터넷)에 있고, 특정 책(웹 페이지)을 찾고 싶습니다. 도서관 사서(라우터)가 당신이 찾는 정확한 책을 찾아주는 것입니다. 웹 개발에서 라우팅은 이와 같은 사서 역할을 하며, 웹 요청을 애플리케이션의 정확한 부분으로 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
를 방문할 때 UserController
의 index
메서드를 호출합니다.
라우트 매개변수
이제 더 흥미로운 부분으로 넘어가보겠습니다. 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