
PHP 프레임워크 – Laravel – 라우팅
안녕하세요~ 여러분 😊
이번 시간에는 Laravel에서 가장 기본이자 핵심 기능 중 하나인 **라우팅(Routing)**에 대해 알아볼게요!
라우팅이란, 간단히 말하면
사용자가 어떤 URL로 접속했을 때, 어떤 동작을 할지를 결정해주는 지도 같은 역할이에요.
Laravel은 이 라우팅 기능을 정말 쉽고 강력하게 사용할 수 있도록 설계되어 있어서
복잡한 웹 경로도 단 한 줄 코드로 처리할 수 있는 마법 같은 기능을 제공한답니다!
라우팅이란 무엇인가요?
웹 애플리케이션에서 사용자가 특정 URL을 요청하면
그에 해당하는 페이지나 기능을 실행해주는 것이 바로 라우팅입니다.
💡 비유하자면?
사용자가
/blog
로 들어오면 “블로그 페이지로 안내해 주세요!” 라는 요청이 오는 것이고,
Laravel은 그걸 듣고 “아~ 블로그 컨트롤러를 실행해야겠구나!”라고 행동하는 거예요 😊
Laravel의 라우팅 기본 구조
Laravel에서는 모든 웹 경로를
routes/web.php
파일에서 정의합니다.
예시
Route::get('/', function () {
return '홈페이지에 오신 걸 환영합니다!';
});
사용자가
http://localhost/
로 접속했을 때 위 메시지를 보여주는 라우트예요.
라우트 메서드 종류
메서드 | 설명 |
---|---|
Route::get() |
데이터를 조회하는 GET 요청 처리 |
Route::post() |
데이터를 제출하는 POST 요청 처리 |
Route::put() |
기존 데이터를 업데이트 |
Route::delete() |
데이터를 삭제 |
Route::patch() |
일부 데이터 수정 |
Route::match() |
여러 메서드 처리 |
Route::any() |
모든 HTTP 요청 처리 |
예시
Route::post('/login', function () {
return '로그인 처리 중...';
});
파라미터 라우트 처리하기
✅ 필수 파라미터
Route::get('/user/{id}', function ($id) {
return "유저 번호: " . $id;
});
/user/3
→ “유저 번호: 3”
✅ 선택 파라미터
Route::get('/greet/{name?}', function ($name = '방문자') {
return "안녕하세요, {$name}님!";
});
/greet
→ “안녕하세요, 방문자님!”
라우트 이름 지정하기
라우트에 이름을 지정해두면 나중에 쉽게 참조할 수 있어요.
Route::get('/home', function () {
return view('home');
})->name('home');
$url = route('home'); // URL 생성
컨트롤러와 연결하기
실제 프로젝트에서는 로직을 컨트롤러에 분리해서 관리하는 게 일반적입니다.
use App\Http\Controllers\PostController;
Route::get('/posts', [PostController::class, 'index']);
PostController의 index() 메서드를 실행하게 됩니다.
그룹 라우팅
공통된 URL 접두어나 미들웨어가 있을 때는 그룹으로 묶을 수 있어요.
Route::prefix('admin')->middleware('auth')->group(function () {
Route::get('/dashboard', function () {
return '관리자 대시보드';
});
Route::get('/users', function () {
return '관리자 유저 관리';
});
});
/admin/dashboard
,/admin/users
와 같이 동작하고, 인증 미들웨어가 적용됩니다.
라우트에 미들웨어 적용하기
미들웨어는 요청이 들어왔을 때 가로채서 검사하거나 조작하는 역할을 합니다.
Route::get('/profile', function () {
return '프로필 페이지';
})->middleware('auth');
로그인된 사용자만 접근 가능하게 설정하는 예제입니다.
라우트에 뷰 연결하기
Blade 템플릿과 연동된 페이지를 쉽게 보여줄 수 있어요.
Route::get('/welcome', function () {
return view('welcome');
});
resources/views/welcome.blade.php
를 출력합니다.
라우트 확인 명령어
php artisan route:list
Method | URI | Name | Action |
---|---|---|---|
GET | /home | home | Closure / Controller 참조 |
POST | /login | App\Http\Controllers… |
이 명령어로 현재 설정된 모든 라우트를 확인할 수 있어요.
RESTful 라우팅 (리소스 기반)
Laravel은 RESTful한 방식으로 CRUD 라우트를 자동으로 만들어주는 기능도 제공해요.
Route::resource('photos', PhotoController::class);
이 한 줄로 아래처럼 7개의 라우트가 생성됩니다:
메서드 | URL | 설명 |
---|---|---|
GET | /photos | 목록 |
GET | /photos/create | 생성 폼 |
POST | /photos | 저장 |
GET | /photos/{id} | 상세 |
GET | /photos/{id}/edit | 수정 폼 |
PUT | /photos/{id} | 수정 저장 |
DELETE | /photos/{id} | 삭제 |
라우팅 작성 시 주의할 점 ✅
항목 | 주의 사항 |
---|---|
라우트 순서 | 동일한 경로일 경우, 먼저 정의된 라우트가 우선 적용 |
파라미터 타입 | 숫자나 문자만 받도록 where() 제약 가능 |
보안 문제 | 로그인 없이 민감한 라우트 접근 허용하지 않기 |
중복 방지 | 동일 URL이 여러 곳에 정의되면 혼란 초래 |
미들웨어 누락 | 인증/권한 확인이 필요한 라우트에는 반드시 적용 |
요약 🎯
기능 | 설명 |
---|---|
기본 라우팅 | Route::get() 등으로 경로 지정 |
파라미터 처리 | {id} , {name?} 형태로 유동적인 경로 지정 |
컨트롤러 연결 | [컨트롤러::class, 메서드] 방식 |
그룹/미들웨어 | 공통 설정을 그룹으로 묶어 사용 |
RESTful 라우트 | Route::resource() 로 CRUD 자동 생성 |
마무리하며 😊
라우팅은 Laravel의 중심 기능이에요!
이걸 잘 다루면 프로젝트 구조도 명확해지고, 협업도 훨씬 쉬워져요.
마치 네비게이션처럼 모든 요청을 어디로 어떻게 연결할지 정리해주는 역할을 하니,
라우팅만 잘 짜도 프로젝트의 반은 성공했다고 해도 과언이 아니에요~ 🚗📍
다음 시간에는 컨트롤러 생성과 사용법을 본격적으로 배워볼게요!
그럼 모두 즐거운 라라벨 여행 되시길 바라요~ 💻✨🚀