为什么在Laravel 5.7中没有在我定义的Route中捕获请求的文件URI?

时间:2019-01-06 19:59:27

标签: laravel laravel-routing laravel-5.7

我的routes/api.php文件中包含以下代码:

Route::group(['middleware' => 'auth:api'], function () {
  Route::prefix('photoalbum')->group(function() {
    Route::prefix('image')->group(function() {
      Route::post('download/{albumId}/{size}/{filename}',
                  'PhotoalbumImageController@download');
      // ...
    });
  });
});

Route::fallback('HomeContorller@index');

现在,我尝试打开此URL:

http://myproject.test/api/photoalbum/image/download/1/xs/dog.jpg

...我从HomeController@index函数中得到结果。其他路线运行正常。

更新

php artisan route:list获得正确的路由列表,包含以下内容:

|        | POST     | api/photoalbum/image/download/{albumId}/{size}/{filename}      |      | App\Http\Controllers\PhotoalbumImageController@download          | api,auth:api,auth |

另外:请求的文件不存在。控制器应该正在处理并提供服务。

为什么不能在定义的路由中捕获该请求并将其发送到PhotoalbumImageController@download函数,该如何解决?

2 个答案:

答案 0 :(得分:2)

您定义的路由类型为POST,并且您尝试通过GET访问。 将路线更改为Route::get可解决您的问题。

答案 1 :(得分:0)

请尝试此操作,并为路由使用名称,这很有用,并记住呼叫是否为GET,POST,PUT等。

Route::group(['middleware' => 'auth:api','prefix'=>'photoalbun/image'], function () {
Route::match(['post','get'],'/download/{albumId}/{size}/{filename}','PhotoalbumImageController@download')->name('api.photoalbun.image.download');
    });

要查看您可以使用的所有路线

php artisan route:list