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

Laravel内部API调用失败:cURL错误6与28问题求助

Laravel内部API调用故障排查与解决

问题现象

  • 调用Http::get('/api/test')访问http://localhost:8000/test时,抛出cURL error 6: 无法解析主机: api
  • 改用完整URLHttp::get('http://localhost:8000/api/test')时,出现cURL error 28: 连接超时
  • 外部API调用正常,目标API端点在Postman中可正常返回数据
  • 环境版本:PHP 8.2.12、Laravel 11.27.2
  • 期望返回格式:
{
  "name": "X",
  "address": "Y"
}

相关代码示例

api.php

Route::get('/test', function(){
    return response()->json([
        'name' => 'John Doe',
        'address' => 'USA'
    ]);
});

web.php

Route::get('/test', [WebPostController::class, 'info']);

WebPostController.php

class WebPostController extends Controller
{
    public function info()
    {
        $response = Http::get('/api/test');
        $data = $response->json();
        return $data;
    }
}

解决方法

方案一:直接调用内部逻辑(推荐)

同一Laravel应用内没必要通过HTTP请求调用API,直接复用对应路由的业务逻辑即可,既高效又避免网络问题:

class WebPostController extends Controller
{
    public function info()
    {
        // 直接复用api/test的返回逻辑
        return response()->json([
            'name' => 'John Doe',
            'address' => 'USA'
        ]);
        
        // 如果API是控制器方法,直接实例化调用(假设API对应ApiTestController的test方法)
        // $apiController = new \App\Http\Controllers\ApiTestController();
        // return $apiController->test();
    }
}

方案二:解决单线程服务器超时问题

如果必须使用HTTP调用,超时通常是因为php artisan serve是单线程服务器,处理当前请求时无法响应新的内部请求。解决方式:

  • 换用多线程服务器,比如Laravel Valet、Nginx+PHP-FPM
  • 或者启动两个不同端口的开发服务器(不推荐,冗余):
    1. 第一个终端:php artisan serve --port=8000
    2. 第二个终端:php artisan serve --port=8001
    3. 调用时使用http://localhost:8001/api/test

方案三:修复HTTP客户端路径解析

使用相对路径时,Laravel HTTP客户端需要正确的基础URL配置,否则会解析错误:

  1. 在config/services.php中添加API基础URL配置:
return [
    // 其他配置...
    'internal_api' => [
        'base_uri' => 'http://localhost:8000/',
    ],
];
  1. 调用时使用配置的客户端:
$response = Http::client('internal_api')->get('api/test');
$data = $response->json();
return $data;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:52:46