라우팅 패킷 기술



경로 그룹화

Route 클래스의 그룹 메서드를 사용하여 그룹 라우팅에 대한 일부 공통 경로 설정 매개 변수를 등록하고 정의합니다. 예:

Route::group('blog', function () {
    Route::rule(':id', 'blog/read');
    Route::rule(':name', 'blog/read');
})->ext('html')->pattern(['id' => '\d+', 'name' => '\w+']);

그룹 라우팅은 모든 라우팅 매개 변수 설정, 사용을 지원합니다. 특정 매개변수 라우팅 매개변수 장을 참조하십시오.

일부 라우팅 규칙에 대한 일부 공통 라우팅 매개변수(가상 그룹이라고도 함)를 설정하는 데 사용되는 경우 다음을 사용할 수도 있습니다.

Route::group(function () {
    Route::rule('blog/:id', 'blog/read');
    Route::rule('blog/:name', 'blog/read');
})->ext('html')->pattern(['id' => '\d+', 'name' => '\w+']);

라우팅 그룹은 중첩을 지원합니다. 예:

Route::group(function () {
    Route::group('blog', function () {
        Route::rule(':id', 'blog/read');
        Route::rule(':name', 'blog/read');
    });
})->ext('html')->pattern(['id' => '\d+', 'name' => '\w+']);

중첩 그룹이 사용되는 경우 이 경우 하위 그룹은 상위 그룹의 매개변수 및 변수 규칙을 상속하며 최종 라우팅 규칙에 정의된 매개변수 및 변수 규칙이 우선 적용됩니다.

접두사 방법을 사용하면 동일한 경로 주소의 정의를 단순화할 수 있습니다. 예를 들어, 다음 정의

Route::group('blog', function () {
    Route::get(':id', 'blog/read');
    Route::post(':id', 'blog/update');
    Route::delete(':id', 'blog/delete');
})->ext('html')->pattern(['id' => '\d+']);

는 그룹 아래의 모든 경로를 원하는 경우

Route::group('blog', function () {
    Route::get(':id', 'read');
    Route::post(':id', 'update');
    Route::delete(':id', 'delete');
})->prefix('blog/')->ext('html')->pattern(['id' => '\d+']);

경로 완전 일치

로 단순화할 수 있습니다. 정확한 일치를 사용하려면

Route::group('blog', function () {
    Route::get(':id', 'read');
    Route::post(':id', 'update');
    Route::delete(':id', 'delete');
})->completeMatch()->prefix('blog/')->ext('html')->pattern(['id' => '\d+']);

지연 경로 확인

을 사용하면 됩니다. 즉, 정의한 라우팅 규칙(주로 그룹 라우팅 및 도메인 이름 라우팅 규칙)은 로드할 때 실제로 등록되지 않습니다. 라우팅 정의 파일은 일치하지만 경로 그룹 또는 도메인 이름에 도달한 경우에만 등록 및 확인이 실제로 수행되므로 경로 등록 및 확인 성능이 크게 향상됩니다.

지연 경로 구문 분석은 기본적으로 꺼져 있습니다. 라우팅 구성 파일에서 설정할 수 있습니다:

// 开启路由延迟解析
'url_lazy_route'         => true,

지연 경로 구문 분석을 켠 후 경로 암호 해독 URL을 생성해야 하는 경우 명령줄 명령을 사용해야 합니다

php think optimize:route

경로 캐시 구문 분석을 생성합니다.

라우팅 그룹 또는 도메인 이름 라우팅을 통해 경로를 정의하면 지연된 확인을 활용할 수 있습니다.

라우팅 지연 해결이 활성화되면 정의된 도메인 이름 경로 및 그룹 경로가 지연되고 해결됩니다. 즉, 불필요한 등록을 피하기 위해 도메인 이름 또는 그룹이 실제로 일치한 후에만 라우팅 규칙이 등록됩니다. 그리고 해상도 오버헤드.

라우팅 규칙 병합 및 구문 분석

동일한 라우팅 그룹 아래의 라우팅 규칙은 라우팅 그룹 아래의 모든 라우팅 규칙을 순회하지 않고 병합된 구문 분석을 지원하므로 경로 구문 분석 성능을 크게 향상시킬 수 있습니다.

특정 그룹에 대해 병합 규칙 구문 분석을 별도로 켜는 사용법은 다음과 같습니다.

Route::group('user', function () {
    Route::rule('hello/:name','hello');
    Route::rule('think/:name','think');
})->mergeRuleRegex();

이렇게 하면 그룹 내 모든 라우팅 규칙은 몇 개 정의되어 있어도 한 번만 일치하고 확인하면 됩니다(실제로는 현재 요청 유형과 일치하는 항목이 병합되고 확인됩니다) 라우팅 규칙).

mergeRuleRegex 메소드는 라우팅 그룹 또는 도메인 이름 라우팅에만 사용할 수 있습니다(도메인 이름 라우팅은 실제로 특수 그룹입니다).

또는 라우팅 구성 파일에서 전역 병합 규칙을 설정합니다(모든 그룹에 유효)

// 开启路由合并解析
'route_rule_merge'	=> true,

추가 매개변수 전달

통일된 방식으로 그룹 라우팅에 추가 매개변수를 전달할 수 있습니다

Route::group('blog', [
    ':id'   => 'Blog/read',
    ':name' => 'Blog/read',
])->ext('html')
->pattern(['id' => '\d+'])
->append(['group_id' => 1]);

위 그룹 라우팅이 통일되었습니다. group_id 파라미터가 추가되었으며, 이 파라미터의 값은 Request 클래스의 param 메소드를 통해 얻을 수 있습니다.