Laravel | 라우팅 및 컨트롤러 | 라우팅과 routes.php

Web 어플리케이션의 개발을 할 때 먼저 생각해야 하는 것은은 **라우팅(routing)**이다. 라우팅이란, 어떤 주소에 액세스하면 어떤 작업을 수행하는지를 할당하는 것이다.

프레임워크를 사용하지 않았을 때에는 Web 개발은 매우 간단했다. 공개 폴더에서 “myapp"라는 폴더에 helo.php라는 파일을 두면, /myapp/helo.php에 접속하면 그것이 호출되었다.

그런데 프레임워크에서는 그런 간단한 접근 방법은 하지 않는다. 응용 프로그램 전체를 프레임워크에 의해 제어하고, 필요한 경우에 프로그램을 호출 실행하도록 되어 있다. 이 주소에 액세스하면, 어떤 프로그램을 실행하고 어떤 파일을 표시할지에 대해서 프레임워크에서 모두 관리할 수 있게 되어 있는 것이다. 이렇게 하는 것이 라우팅이다.

이 라우팅은 app 안에 Http 폴더에 있는 routes.php 라는 파일에 의해 수행된다. 이 파일을 열면 아래 목록과 같은 스크립트가 적혀 있다.

여기에서는 2개의 static 메소드의 호출이 작성되어 있다. 정리하면, 아래와 같다.

Route::get(XX);
Route::group(XX);

라우팅은 이렇게 Route 라는 클래스에 포함되어 있는 static 메소드를 호출하는 것으로 설정한다. 이러한 방법은 다음과 같이 2개의 인수를 가지고 있다.

Route::메소드(값, 함수);

첫번째 인수가 라우팅에 할당되는 드레스 등의 정보를 나타내는 것이다. 이 값은 메소드에 의해 다소 내용이 다르다. get 메소드에는 주소를 나타내는 텍스트이며, group에서는 주소 정보를 정리한 배열되어 있기도 한다. (자세한 내용은 나중에)

그리고, 두번째 인수가 거기에 액세스 되었을 때 호출되는 처리이다. 이 함수에서 반환된 값이 해당 주소에 접근한 결과로 처리된다. 출력할 내용(텍스트)을 그대로 return해도 되고, HTML 등의 템플릿 파일을 반환하거나 컨트롤러의 호출 처리를 지정할 수 있다.

Route 클래스의 메소드

Route에 포함되어 있는 라우팅 설정을 위한 방법에 대해 간단하게 정리하고 설명한다.

Route::get(주소, 함수);

GET 액세스 되었을 때의 라우팅을 설정한다. 첫번째 인수는 할당 주소를 텍스트로 제공한다. 두번째 인수의 함수로 텍스트를 return하면 그것이 그대로 출력된다.

Route::post(주소, 함수);

POST 액세스 되었을 때의 라우팅을 설정한다. 기본적인 사용법은 get과 같다.

Route::put(주소, 함수);
Route::delete(주소, 함수);

HTTP에는 PUT, DELETE라는 액세스도 있다. 이는 수정 및 삭제를 위한 메소드이다.

Route :: any (주소, 함수);
Route :: match (배열, 주소, 함수);

여러 HTTP 메소드에 대응하기 위한 것이다. any는 모든 HTTP 메소드(GET, POST, PUT 및 DELETE)에 라우팅한다. match는 첫번째 인수에 HTTP 메소드명의 배열(예를 들어, ['get', 'post'])을 준비하고, 그 HTTP 메소드에 액세스하기 위해 라우팅한다.

그러면 간단한 예제를 만들어 보자. routes.php를 아래와 같이 코드를 추가한다.

Route::get('/helo', function () {
    return '<html><body><h1>Hello World</h1><p>this is sample page.</p></body></html>';
});

그리고 서버를 기동하고, 다음 주소를 방문하여 본다.

http://localhost:8000/helo

액세스하면 Hello World라는 제목의 페이지가 표시된다. 이것이 Route::get 메소드에서 생성된 표시이다.

예제를 보면, get 메소드의 첫번째 인자는 /helo로 지정되어 있다. 여기에 액세스하면, 두번째 인수의 함수에서 return되는 HTML 텍스트가 그대로 다시 전송 표시되는 것이다. 이렇듯 라우팅 기능만으로, 주소로 접근하여 화면에 무언가를 표시하는 것이 가능하다.