You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何在ajax里调用API路由定义的路由名称

解决方案

方法1:Blade模板内直接使用route()辅助函数

如果你的Ajax代码写在Blade模板文件中,可直接调用Laravel内置的route()方法生成带完整前缀的路由地址,路由名和你在routes/api.php中定义的完全一致,不需要手动加前缀:

// 示例:routes/api.php中定义的路由
// Route::get('/google/call', [GoogleApiController::class, 'call'])->name('google.api.call');

$.ajax({
    url: "{{ route('google.api.call') }}",
    method: 'GET',
    // 其余请求参数
})

方法2:独立JS文件中使用预定义全局路由变量

如果Ajax代码存放在独立的JS文件中无法直接解析Blade语法,可以在Blade模板中提前声明全局路由映射:

  • 第一步:在页面的Blade模板头部注入路由变量
<script>
window.APP_ROUTES = {
    googleApiCall: "{{ route('google.api.call') }}",
    // 其他需要用到的API路由可统一在这里声明
};
</script>
  • 第二步:在独立JS文件中直接调用全局变量即可
$.ajax({
    url: window.APP_ROUTES.googleApiCall,
    method: 'GET',
    // 其余请求参数
})

方法3:修改API路由默认前缀

如果不需要Laravel默认给API路由加的api前缀,可以直接修改路由服务Provider配置:

  • 第一步:打开app/Providers/RouteServiceProvider.php文件,找到API路由组定义部分
  • 第二步:修改prefix参数,去掉默认的'api'值
// 修改前
Route::prefix('api')
    ->middleware('api')
    ->namespace($this->namespace)
    ->group(base_path('routes/api.php'));

// 修改后(无默认前缀)
Route::prefix('')
    ->middleware('api')
    ->namespace($this->namespace)
    ->group(base_path('routes/api.php'));
  • 第三步:配置修改后执行php artisan route:clear清除原有路由缓存生效

方法4:手动拼接前缀

最简单的临时方案,直接在请求地址前手动加上/api前缀即可:

$.ajax({
    url: "/api/google/call",
    method: 'GET',
    // 其余请求参数
})

注意:如果项目后续修改了API前缀,手动拼接的地址需要同步修改,可维护性较差,优先推荐前两种方案。

内容的提问来源于stack exchange,提问作者Jimmy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:45:03