Laravel。如何根据Content-Type定义路由

时间:2018-01-12 20:39:57

标签: php laravel laravel-routing laravel-5.5

是否可以创建路由,在同一个URL上根据Content-Type标题调用不同控制器中的不同操作?

我不需要这个用于测试目的。我需要在api.php文件中使用某些内容。

1 个答案:

答案 0 :(得分:0)

我一直在寻找这种方法,最后我根据要检查的特殊报头注册了路由。 就我而言,我想与您在Content-Type上使用相同的URL库和基于Action的库。 我将所有标头都放在web.php中,并且可以在api.php中使用它,并进行检查以确认是否设置了Content-Type,如下所示:


$headers = apache_request_headers();
// check headers Content-Type is application json for any call base on json request
if(array_key_exists('Content-Type', $headers) && strtolower($headers['Content-Type']) == 'application/json'){

    // register routes that need Content-Type header
    Route::get('/dashboard', "AuthController@dashboardWithHeader");

}else{

    // register route that dont need this special header
    Route::get('/dashboard', "AuthController@dashboard");

}

通过这种方法,如果设置了Content-Type标头,则可以关联已注册的路由,反之亦然。