Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拉雷维尔。如何根据内容类型定义路由_Php_Laravel_Laravel Routing_Laravel 5.5 - Fatal编程技术网

Php 拉雷维尔。如何根据内容类型定义路由

Php 拉雷维尔。如何根据内容类型定义路由,php,laravel,laravel-routing,laravel-5.5,Php,Laravel,Laravel Routing,Laravel 5.5,是否可以创建一个路由,在同一URL上根据内容类型标题在不同控制器中调用不同的操作 我不需要这个测试的目的。我需要在api.php文件中使用一些东西。我一直在寻找这种方法,最后我根据我想要检查的特殊头来注册我的路由。 在我的例子中,我希望使用与您相同的URL库和操作库,即基于内容类型的相同库。 我在web.php中获取我的所有标题,您可以在api.php中使用它,并检查该标题,以确定内容类型是否设置如下: $headers = apache_request_headers(); // check

是否可以创建一个路由,在同一URL上根据
内容类型
标题在不同控制器中调用不同的操作


我不需要这个测试的目的。我需要在
api.php
文件中使用一些东西。

我一直在寻找这种方法,最后我根据我想要检查的特殊头来注册我的路由。 在我的例子中,我希望使用与您相同的URL库和操作库,即基于
内容类型的相同库。
我在
web.php
中获取我的所有标题,您可以在
api.php
中使用它,并检查该标题,以确定
内容类型是否设置如下:


$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");

}

通过这种方法,如果设置了
内容类型
标题,则您可以注册相关路由,反之亦然。

可能重复@FrankerZ No,但不是。我见过这个问题。我不需要测试它。我需要定义这样一条路线。@FrankerZ是的,这接近我要找的路线。我将尝试使用绑定。请注意我的问题,否则我将被迫删除。)我不希望你失去你的声誉,因为你帮助了我。)@D.R.请不要删除你的问题,因为它的分数是负数,请不要要求投票。如果人们发现你的问题有趣、清晰、有帮助,投票结果就会出来。请改进您的问题,而不是删除is。这是非常重要的,其他人也可以看到这个问题和它的答案,所以它可以帮助他们!虽然有效,但我不同意这种方法。我认为这个逻辑是控制员的责任。你是对的。但在一些特殊情况下,我们需要一条行为非常不同的路线,我们必须这样做,在我的情况下,当我想在laravel中使用react时,我使用这种方法,如果我们不设置内容类型,我们捕获所有路由,并通过
route::view
将其分派到客户端的一个视图中,该视图由客户端决定必须加载哪个页面,请记住,这种方法不适用于路由缓存。此外,这种“复杂”行为的解决方案很简单:将api路由放在api.php下,将非api路由放在web.php上。是的,但基于某些特殊原因,我们决定在web中设置此路由,在api中设置某些路由。但是谢谢你的建议亲爱的EliasMakes对我来说毫无意义,但是不同的方法是有效的。只需考虑找到一种使用路由的方法:缓存,它会使请求更快。