안녕하세요 오늘은 라라 벨의 라우팅과 미들웨어에 대해 알아보도록 하겠습니다. :)
라라 벨의 라우팅은 대표적으로 get과 post를 이용하여 URI와 클로저를 전달 받아, 라우팅을 정의하고 있습니다.
제일 기본 예제를 알아보도록 하겠습니다.
Route::get("get-test", function (){
return "get-test"
});
Route::post("post-test", function (){
return "post-test"
});
위의 예제가 가장 기본적인 get과 post를 이용하여 작성한 라우팅입니다.
여기서 복습하자만 Route는 전 포스팅에서 공부한 내용인 프로바이더와 파사드를 이용하여 Route를 정적 메서드로써 사용할 수 있습니다.
또한,
put, patch, delete, options등의 메서드도 있습니다.
PHP의 PSR7형식을 따르고 있습니다.
라우팅 과정에서 POST의 경우에는 CSRF 토큰 필드를 사용해야 합니다.
CSRF토큰 필드를 포함하지 않을 경우 request는 전달되지 않습니다.
라우팅에 미들웨어를 사용할 수도 있습니다.
그전에 미들웨어가 뭔지 알아보도록 하겠습니다.
미들웨어는 HTTP 요청을 간편하게 필터링할 수 있는 방법을 제공합니다.
예제를 들어보겠습니다.
class CheckAge
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->age <= 200) {
return redirect('home');
}
return $next($request);
}
}
위의 예제는 라라 벨 공식 홈페이지의 예제입니다.
살펴보면, handle메서드 안에 원하는 HTTP라우팅을 할 때 원하는 작업을 작성해 주시면 됩니다.
위의 예제는 age가 200보다 작으면 redirect 아니면 $next($request)를 이용하여, 계속 진행한다는 의미로 받아들이면 됩니다.
그 후, app/Http/Kernel.php안에 미들웨어를 등록한 후,
protected $routeMiddleware = [
'checkAge' => CheckAge::class,
];
라우팅을 할 때 사용하고 싶다면,
Route::middleware("checkAge", function() {
Route::get("test", function(){
return "ok";
});
});
위의 예제처럼 사용하시거나,
Route::get("test", function () {
return "ok"
})->middleware('checkAge');
위의 예제처럼 사용하시면 됩니다.
또한 미들웨어 그룹을 이용하여, 라우팅 하는 순간뿐만 아니라, 별다른 설정 없이 모든 리퀘스트에 대하여, 미들웨어를 설정 포함시키는 방법도 있습니다.
protected $middlewareGroups = [
'web' => [
AgeCheck::class,
],
];
위의 예제처럼 사용하시면 됩니다.
여기서 중요한 포인트는 미들웨어에 순서가 존재하기 때문에, 미들웨어를 추가할 경우에는 순서를 잘 생각하여야 합니다. 또한 순서는 app/Http/Kernel.php 파일의 protected $middlewarePriority속성을 이용하여 우선순위를 정할 수 있습니다.
여기까지 라우팅과 미들웨어에 대해 알아보았습니다 :)
다음 포스팅에는 데이터베이스에 대해 알아보도록 하겠습니다.
'IT' 카테고리의 다른 글
[laravel 기초공부] 라라벨 - 06 (뷰 블레이드- 기본) (0) | 2019.05.13 |
---|---|
[laravel 기초공부] 라라벨 - 05 (데이터베이스 - 기본) (0) | 2019.05.09 |
[laravel 기초공부] 라라벨 - 03 (서비스 프로바이더 파사드) (0) | 2019.05.07 |
[laravel 기초공부] 라라벨 - 02 (서비스 컨테이너) (1) | 2019.05.06 |
[laravel 기초공부] 라라벨 - 01 (0) | 2019.05.03 |