Laravel 有条件的路由

Laravel routing with conditions

它(route:caching) 是如何工作的?如果我缓存了我的路线,它会破坏逻辑吗? 我有一个网络钩子,可以将数据发送到一条路线。数据仅由对象字段不同。将它拆分到不同的路由是否正确,或者我需要制作索引方法,它将通过方法重定向我的逻辑

Route::group(['namespace' => 'Webhook'], function () {

    if (Request::has('message')) {
        Route::post('/', 'WebhookController@message');
    }

    if (Request::has('callback_query')) {
        Route::post('/', 'WebhookController@callback');
    }

});

您可以为此类逻辑使用中间件。

Laravel Middleware

您可以将路由代码缩短为:

Route::group(['namespace' => 'Webhook'], function () {

    Route::post('/', 'WebhookController@handle');

});

并在控制器中完成“繁重的工作”:

class WebhookController extends Controller
{
    public function handle(Request $request)
    {
        if ($request->has('message')) {
            return $this->message();
        }

        if ($request->has('callback_query')) {
            return $this->callback();
        }
    }

    public function message();

    public function callback(); 
}

这相当于:

Route::group(['namespace' => 'Webhook'], function () {

    Route::post('/', function(Request $request) {
        if ($request->has('message')) {
            return (new WebhookController)->message();
        }

        if ($request->has('callback_query')) {
            return (new WebhookController)->callback();
        }
    });

});