개발 알다가도 모르겠네요

Laravel 파일 구조와 라우팅 본문

웹/Laravel

Laravel 파일 구조와 라우팅

이재빵 2023. 3. 13. 09:28
728x90

라라벨은 Docker을 사용하여 라라벨 프로젝트를 실행하기 위한 기본 제공 솔루션인 Sail을 제공.

Sail은 사전 Docker 경험 없이도 PHP, MySQL 및 Redis를 사용하여 라라벨 애플리케이션을 구축할 수 있는 좋은 출발점을 제공.

 

가장 먼저 라라벨로 만든 웹 사이트의 URL을 결정하는 라우터부터 수정해보자.

라라벨의 라우터는 최상위 디렉토리 아래에 있는 routes/web.php 파일이 우리가 수정할 대상이다.

이 파일에 아래 소스코드를 복사하여 붙여넣으면, 이후에 웹 브라우저에서 /hello/world 경로로 접속하면 "Hello World"라는 문구가 표시되는 것을 볼 수 있다.

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

 

 

먼저 이 코드는 Route라는 객체의 정적 메서드(static method)인 get()을 부르고 있다. 

Route는 라라벨에서 제공하는 객체이고, get()은 이름 그대로 GET 방식으로 들어온 요청을 처리하는 메서드이다.

이 메서드는 첫 번째 인자에 담긴 경로로 사용자가 접속할 경우, 두 번째 인자로 받은 클로저(closure, 익명함수) 안의 소스코드를 실행한다. 이 때 return으로 반환하는 문자열은 그대로 응답으로 출력됩니다. 이러한 과정을 거쳐 위 코드는 사용자가 GET 방식으로 /hello/world 경로에 접근했을 때, "Hello World"라는 문구를 출력하는 것이다.

 

Route::get('/hello/world', function () {
    return '<!DOCTYPE html>
    <html lang="ko">
    <head>
        <meta charset="utf-8" />
        <title>My first Laravel web page</title>
    </head>
    <body>
        <b>Hello World</b>
    </body>
    </html>
    ';
});

 

라라벨의 라우터에는, 경로에 들어간 특정한 부분을 변수로 컨트롤러에 전달할 수 있는 특별한 기능이 있다.

이것을 라우트 파라미터라고 부르는데, 라우트 파라미터를 설정하기 위해서는, 라우터의 경로에 중괄호 {}로 감싼 부분을 넣어주면 된다.

아래의 예제를 살펴보면, 라우터의 경로에 {var}라고 하는 부분이 보이는데, 이것이 라우트 파라미터이다.

그리고 이 라우터에 연결된 HelloController의 anyone 메서드에는, 인자로 $var라는 문자열 변수가 들어있는 것을 볼 수 있다.

이 소스코드를 읽은 라라벨은 /hello/ 경로 뒤에 있는 값을 anyone 메서드의 $var 인자에 담아줄 것이다.

 

 

Route::get('/hello/{var}', [HelloController::class, 'anyone']

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class HelloController extends Controller
{
    public function anyone(string $var)
    {
         return 'Hello ' . $var . ' on ' . date('m, d, Y') . '!';
    }
}

 

RouteServiceProvider

라우트, 로그, 이벤트같은 것을 등록할 때 라라벨 서비스 컨테이너가 처리하는데,

여기서 라우트에 대한 서비스 프로바이더가 RouteServiceProvider.

' > Laravel' 카테고리의 다른 글

Laravel에서 Social OAuth 2.0 구현하기  (0) 2023.06.01
Laravel Controller  (1) 2023.03.15
Laravel Sail을 알아보자  (0) 2023.03.14
Windows에서 Laravel 도커 실행시 오류 문제 해결  (0) 2023.03.08