Laravel跨项目调用带id路径参数的API返回404错误如何解决
问题原因
- 路由参数类型不匹配:项目A定义的是路径参数路由
/getBook/{id},要求id参数必须拼接在URL路径中;你当前的写法是将id作为查询参数传递,实际发起的请求地址为http://127.0.0.1:900/api/getBook?id=1,和项目A的路由规则完全不匹配,直接触发404。 - 路由前缀不一致:项目A定义的路由路径是
/getBook/{id},你请求的地址额外加了/api前缀,如果项目A没有给该路由配置全局/api前缀,该请求地址本身就不存在。
修复方案
方案1:按现有路由规则修改请求写法
确认项目A的路由是否配置了全局/api前缀,将id直接拼接到请求路径中即可:
Route::get("/api/testing", function () { // 若项目A没有配置/api前缀,请求地址改为 http://127.0.0.1:900/getBook/1 $response = Http::get('http://127.0.0.1:900/api/getBook/1'); return $response; });
方案2:修改项目A路由支持查询参数传参
如果你希望保留当前传参写法,可以调整项目A的路由规则,改为接收查询参数:
Route::get("/getBook", function (\Illuminate\Http\Request $request) { return response()->json(BlogArticle::find($request->input('id'))); });
额外检查项
- 确认项目A实际运行端口为900,不要和另一个项目的端口混淆
- Laravel 8以下版本需要手动安装
guzzlehttp/guzzle依赖才能正常使用Http客户端
内容的提问来源于stack exchange,提问作者Thymeleaf
相关产品推荐
相关产品推荐

