Laravel에서 웹 어플리케이션에 들어오는 요청을 처리하기 위한 개념인 Routing에 대해서 알아보고자 한다.
Route::{메소드}({URL}, {콜백(클래스, 메소드, 익명 함수 등)});
Route::post('/sample', [SampleController::class, 'index']);
= URL/sample로 요청이 있을시, SampleController의 index 메소드를 실행
// get요청 처리
Route::get($uri, $callback);
// post요청 처리
Route::post($uri, $callback);
// put요청 처리 (데이터 전부 갱신)
Route::put($uri, $callback);
// patch요청 처리 (데이터 일부 갱신)
Route::patch($uri, $callback);
// delete요청 처리 (데이터 삭제)
Route::delete($uri, $callback);
// 복수의 HTTP요청에 대해 동작
Route::match(['get', 'post'], $url, $callback);
// 모든 HTTP요청에 대해 동작
// ※ 다른 HTTP요청 라우터가 같이 있을 경우, 해당 라우터를 우선시 함
Route::any($url, $callback);
// 라우트를 그룹화하여 관리
// 1. 라우트 그룹 정의 (그룹 내의 모든 라우터의 설정을 전부 변경)
Route::group(['prefix' => 'keyword'], function () {
Route::get($uri1, $callback);
Route::get($uri2, $callback);
});
// 2. 미들웨어 적용
Route::group(['middleware' => 'auth'], function () {
// 그룹 내 모든 라우터에 auth 미들웨어 적용
});
// 3. 네임스페이스 그룹화
Route::group(['namespace' => 'Admin'], function () {
// App\Http\Controllers\Admin(네임스페이스)에 속한 컨트롤러 참조
});
// 4. 서브 도메인 라우팅
Route::group(['domain' => 'example.com'], function () {
// 해당 도메인에 대한 라우트 처리
});
// 일련의 CRUD 작업에 대해서 한번에 정의할 수 있는 라우트
Route::resource($uri, $callback);
// 접두사 지정 (아래는 'keyword/list'로 인식)
Route::prefix('keyword')->get('/list', $callback);
// 바로 view로 렌더링
Route::view($uri, 'view');
// 특정 URL로 접근했을때 다른 URL로 리다이렉션 처리
Route::redirect($uri, $callback);
// 1. 클로저 : 익명함수로 콜백을 정의
Route::get($uri, function ({Request $request}) {
// $request로부터 뷰에서 넘어온 파라미터 값 추출 가능
$request->input('name');
// 내부에서 요청 처리 로직을 직접 작성 가능
});
// 2. 컨트롤러 액션
// 사용법 1
Route::get($uri, [UserController::class, 'use']);
// 사용법 2
Route::get($uri, 'App\Http\Controllers\UserController@use');