목차


 문자열 리턴

Route::get('/hi', function () {
    return '안녕하세요.';
});

 

 뷰 리턴

뷰 파일이 없으면 에러 발생

디버그모드 설정(.env 파일)이 false면 500에러, true면 에러의 상세정보 출력

<!-- resources/view/Myview.blade.php -->
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>MyView</title>
</head>
<body>
    <h1>MyView!!!</h1>
</body>
</html>
Route::get('/myview', function () {
    return view('myview');
});

 

 HTTP 메소드 대응 라우트

여러 라우트에 해당될 경우 가장 마지막에 정의된 것이 실행

// Home
Route::get('/home', function() {
    return view('home');
});

 

// GET 요청에 대한 처리
Route::get('/method', function() {
    return 'GET Method!!';
});

 

// POST 요청에 대한 처리
Route::post('/method', function() {
    return 'POST Method!!';
});

 

<!-- resources/view/home.blade.php -->
<form action="/method" method="POST">
	<!-- @csrf : 라라벨의 CSRF(Cross-Site Request Forgery) 보호를 위한 토큰을 출력하는
    	라라벨 블레이드 템플릿의 지시문, 
        토큰은 폼 제출 시 보안을 강화하기 위해 사용됨 -->
    @csrf
    @method('PUT')
    <button type="submit">PUT</button>
</form>
// PUT 요청에 대한 처리
Route::put('/method', function() {
    return 'PUT Method!!';
});

 

<form action="/method" method="POST">
    @csrf
    @method('DELETE')
    <button type="submit">DELETE</button>
</form>
// DELETE 요청에 대한 처리
Route::delete('/method', function() {
    return 'DELETE Method!!';
});

 

// 모든 요청에 대한 처리 (중복되는 처리를 하지않도록 주의)
Route::any('/method', function() {
    return 'ANY Method!!';
});

 

// 지정한 특정 메소드 요청에 대한 처리
Route::match(['get', 'post'], '/method', function() {
    return 'MATCH Method!!';
});

 

 라우트에서 파라미터 제어

http://localhost/query?id=IDID&name=NAMENAME

use Illuminate\Http\Request;

Route::get('/query', function(Request $request) {
    return $request->id.", ".$request->name;
});

 

http://localhost/segment/1

// URL 세그먼트로 지정 파라미터 획득
// 세그먼트가 없을경우 404 ERROR
// http://localhost/segment/1로 GET 요청을 보내면 1이라는 값이 $id 변수에 할당됨
Route::get('/segment/{id}', function($id) {
    return 'segment ID : '.$id;
});

 

http://localhost/segment2

// URL 세그먼트로 지정 파라미터 획득 : 기본값 설정(404 ERROR 안뜨게)
Route::get('/segment2/{id?}', function($id = 'base') {
    return 'segment2 ID : '.$id;
});
// Request로도 세그먼트 파라미터 획득 가능, 세그먼트 파라미터가 없어도 404 ERROR 발생 안함
Route::get('/segment2/{id?}', function(Request $request) {
    return 'segment2 ID : '.$request->id;
});

 

 라우트의 이름 지정

 

<a href="{{route('names.index');}}">names</a>
// 사용법 : <a href="{{route('names.index');}}">names</a>
Route::get('/names', function() {
    return 'name.index !!!';
})->name('names.index');

 

 라우트 매칭 실패시 대체 라우트 정의

 

http://localhost/aaaa

Route::fallback(function() {
    return '잘못된 경로로 접속하셨습니다.';
});

 

 라우트의 그룹 및 공통경로설정

 

// 공통 경로 : prefix('공통 경로 이름')->group();
// Route::prefix('users')->group()은 /users를 공통 경로로 지정하고 해당 그룹 내에서 라우트를 정의하는 것을 의미함
// 이렇게 공통 경로를 지정하면, 그룹 내의 각 라우트는 /users 접두사를 가져야 함
// 		ex) localhost/users/login, localhost/users/logout, ...
Route::prefix('users')->group(function() {
    Route::get('/login', function() {
        return 'Login!!';
    })->name('users.login');
    Route::get('/logout', function() {
        return 'Logout!!';
    })->name('users.logout');
    Route::get('/registration', function() {
        return 'Registration!!';
    })->name('users.registration');
});

 

 서명 라우트

http://localhost/sign
서명된 URL링크

use Illuminate\Support\Facades\URL;

Route::get('/makesign', function() {
    // 일반적인 URL 링크 생성하기
    $baseUrl = route('sign');

    // 서명된 URL 링크 생성하기
    $signUrl = URL::signedRoute('sign');

    // 유효기간이 있는 서명된 URL 링크 생성하기
    $limitSignUrl = URL::temporarySignedRoute('sign', now()->addSecond(10));

    return $baseUrl . '<br><br>' . $signUrl . '<br><br>' . $limitSignUrl . '<br><br><a href="' . $limitSignUrl . '">유효기간이 있는 서명된 URL</a>';
});

Route::get('/sign', function() {
    return 'Sign!!';
})->name('sign')->middleware('signed');

 

 컨트롤러

 

// 커맨드(cmd, powershell)로 컨트롤러 생성 : php artisan make:controller TestController
use App\Http\Controllers\TestController;
Route::get('/test', [TestController::class, 'index'])->name('tests.index');

// 커맨드(cmd, powershell)로 컨트롤러 생성 : php artisan make:controller TasksController --resource
use App\Http\Controllers\TasksController;
Route::resource('/tasks', TasksController::class);

 

Github

Link

 

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

seeders(database/seeders), factories(database/factories)  (0) 2023.05.27
migrations(database/migrations)  (0) 2023.05.27
블레이드 템플릿(resources/views)  (0) 2023.05.24
Laravel  (0) 2023.05.23

+ Recent posts