Laravel 5.3如何避免多语言应用程序中api路由前缀前的语言环境?

时间:2017-04-07 17:25:23

标签: php laravel routing laravel-5.3

我在Laravel 5.3中构建了一个多语言应用程序,我有一堆api路由,当我使用默认语言时,会返回一些资源,其中url就像这个http://app-domain.com/api/resource

当我不使用默认语言时,问题出现了。当应用程序尝试调用api时,它向http://app-domain.com/locale/api/resource发送请求,该请求不返回任何内容,因为它不是正确的路径。

我的实施非常简单,只是我routes/api.php

中的基本路由
Route::group([
    'prefix' => 'api'
  ],function() {
    Route::get('resource', 'ApiController@getResource')->name('get-resource');
});

然后我使用jquery ajax对象来调用它

$.get( "api/resource", function( data ) {
  //run somecode
});

如何解决这个问题,无论语言如何,我的api路由都能正确解析?我可以在路线中设置一些参数以防止这种情况发生吗?我一直在寻找documentation,但没有发现任何相关内容。

P.S。:我正在使用Mcmanamara Laravel Localization

1 个答案:

答案 0 :(得分:0)

如果你使用查询字符串,恕我直言,设置语言环境会更好:即:

http://app-domain.com/api/resource?locale=en

两个有效的理由:

1)查询字符串中的语言环境也可能不存在,因此您可以回退到默认语言环境。

2)在路由中使用locale参数可能会与其他路由参数冲突,从而产生很多混淆