PHP 프레임워크 – Laravel – 2 – 라우팅

PHP 프레임워크 - Laravel - 2 - 라우팅
PHP 프레임워크 – Laravel – 2 – 라우팅

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의 중심 기능이에요!
이걸 잘 다루면 프로젝트 구조도 명확해지고, 협업도 훨씬 쉬워져요.

마치 네비게이션처럼 모든 요청을 어디로 어떻게 연결할지 정리해주는 역할을 하니,
라우팅만 잘 짜도 프로젝트의 반은 성공했다고 해도 과언이 아니에요~ 🚗📍

다음 시간에는 컨트롤러 생성과 사용법을 본격적으로 배워볼게요!
그럼 모두 즐거운 라라벨 여행 되시길 바라요~ 💻✨🚀

답글 남기기