route

์‹ค์ œ ์š”์ฒญ์— ํ•ด๋‹นํ•˜๋Š” url์— ๋งž๋Š” ๋ผ์šฐํ„ฐ๋ฅผ ์ฐพ๋Š” ๋ถ€๋ถ„

Illuminate\Support\Facades\Route๋ฅผ traitsํ•˜์—ฌ Route์˜ ๋ฉ”์„œ๋“œ๋“ค๋กœ ์š”์ฒญ์„ ๋ผ์šฐํŒ…ํ•  ์ˆ˜ ์žˆ๋‹ค.

get,post๋“ฑ๊ณผ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋“ค์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ฒซ๋ฒˆ์งธ ์ธ์ž๋Š” ์š”์ฒญ๊ฒฝ๋กœ์ด๋ฉฐ, ๋‘๋ฒˆ์งธ ์ธ์ž๋Š” ์š”์ฒญ์ด ์™”์„๋•Œ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ๋™์ž‘ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์ด๋•Œ ๋‘๋ฒˆ์งธ ์ธ์ž์˜ ํ•จ์ˆ˜๋ฅผ ํด๋กœ์ €๋ผ๊ณ  ํ•œ๋‹ค.

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

view()๋ฅผ ํ†ตํ•ด resources/views/ ์— ์žˆ๋Š” ํŒŒ์ผ์„ returnํ•  ์ˆ˜ ์žˆ๋‹ค.

Route::get('/', function() {
    return '{id: "gowoo"}';
});

์ฒซ๋ฒˆ์งธ ์˜ˆ์‹œ์ฒ˜๋Ÿผ html view๋‚˜ ์œ„์™€๊ฐ™์ด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ๋ฌธ์ž์—ด์„ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•˜๋ฉด controller๊ฐ€ ํ•  ์ผ์„ ํด๋กœ์ €๊ฐ€ ๋Œ€์‹ ํ•ด์„œ ํ•œ ๊ฒƒ์œผ๋กœ controller๊ฐ€ ์—†์ด๋„ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค€๋‹ค. ๋ฌผ๋ก , ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋‹ค.

ํŒŒ๋ผ๋ฏธํ„ฐ

Route::get('/{foo}', function($foo) {
    return $foo;
});

Route::get('/{boo?}', function($boo = 'bar') {
    return $boo;
});

url ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ {}๋กœ ๊ฐ์‹ธ๋ฉด ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ๋ณ€์ˆ˜๋กœ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ , ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—†์„๋•Œ ๊ธฐ๋ณธ๊ฐ’์„ ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด ?๋ฅผ ๋ถ™์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŒŒ๋ผ๋ฏธํ„ฐ ํŒจํ„ด

Route::pattern('foo','[0-9a-zA-z]{3}')

Route::get('/{foo}', function($foo) {
    return $foo;
});

Route์˜ pattern๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋Œ€ํ•ด ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ณ  Pattern์— ๋งž์ง€ ์•Š๋Š”๋‹ค๋ฉด NotFound ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

Route::get('/{foo}', function($foo) {
    return $foo;
})->where('foo','[0-9a-zA-z]{3}');

pattern()๋Œ€์‹  get()์— where()์„ ๋ฉ”์„œ๋“œ ์ฒด์ด๋‹์„ ์ด์šฉํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

๋ณ„์นญ

Route::get('/{foo}',
    'as' => 'foo',
    function($foo) {
        return $foo;
    }
]);

Route::get('/home', function() {
    return redirect(route('home'));
});

์ปจํŠธ๋กค๋Ÿฌ๋‚˜ ๋ทฐ์—์„œ ๋‹ค๋ฅธ route๋กœ ์ด๋™ํ•˜๋Š” ๋งํฌ๋ฅผ ๋งŒ๋“ค๋•Œ ๊ฐ ๋ผ์šฐํŠธ๋งˆ๋‹ค ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜๋ฉด ์‰ฝ๊ฒŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. Route::get() ๋ฉ”์„œ๋“œ์˜ ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ ๋ฐฐ์—ด์„ ์ „๋‹ฌํ•˜๋ฉด ๋˜๋Š”๋ฐ, ์œ„์™€ ๊ฐ™์ด ๋ฐฐ์—ด์— as๋ฅผ key๋กœ ํ•˜๊ณ  ๋ณ„์นญ์„ value๋กœ ํ•˜๋Š” ๊ฐ’๊ณผ ํด๋กœ์ €๋ฅผ ๋‹ด์•„ ์ „๋‹ฌํ•˜๋ฉด ๋œ๋‹ค.

Group

//middleware
Route::middleware(['first', 'second'])->group(function () {
    Route::get('/', function () {
        // Uses first & second middleware...
    });

    Route::get('user/profile', function () {
        // Uses first & second middleware...
    });
});

//sub domain
Route::domain('{account}.myapp.com')->group(function () {
    Route::get('user/{id}', function ($account, $id) {
        //...
    });
});

//prefix
Route::prefix('admin')->group(function () {
    Route::get('users', function () {
        // Matches The "/admin/users" URL
    });
});

group()๋ฉ”์„œ๋“œ๋Š” ๊ณตํ†ต๋œ url์— ๋ฏธ๋“ค์›จ์–ด๋ฅผ ๋ถ™์ด๊ฑฐ๋‚˜ ์„œ๋ธŒ๋„๋ฉ”์ธ/ํ•˜์œ„ prefix๋ฅผ ๋ฌถ์„๋•Œ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ค๋ฒ„๋ผ์ด๋“œ

๊ฐ™์€ ๊ฒฝ๋กœ์˜ ๋ผ์šฐํ„ฐ๋ฅผ ๋‘๋ฒˆ ์ •์˜ํ•˜๋ฉด ๊ฐ€์žฅ ์•„๋ž˜์ชฝ์— ์ •์˜ํ•œ ๋ผ์šฐํŠธ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

Last updated