内部 Laravel api 的 Api 消耗失败 - cURL 错误 6:无法解析主机

问题描述 投票:0回答:1

这是我在点击 url 时收到的错误消息 http://localhost:8000/test

cURL 错误 6:无法解析主机:api(请参阅 https://curl.haxx.se/libcurl/c/libcurl-errors.html)了解 api/test

这里是定义 /api/test 路由的 api 文件

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;
    }

P.S:外部 api 工作正常,但是在同一个 laravel 应用程序内创建的内部 api 失败。端点在 POSTMAN 中工作正常。 有时这也会显示 cURL error 28: Connection timeout after x

版本 - PHP 8.2.12 — Laravel 11.27.2

我想像这样从 api 端点获取数据

{
  "name": "X",
  "address": "Y",
}
php laravel curl
1个回答
0
投票

如果你改变

Http::get('/api/test')

Http::get('http://localhost:8000/api/test')

然后它可能会起作用..这是因为您传递的 URL 被“读取”为

http://api/test
并且主机名/域
api
无法解析为任何内容。

但是,如果您想访问应用程序中存在的端点,您可以跳过整个 HTTP 设置过程并直接访问该方法(从 Laravel 5 中的另一个控制器访问控制器方法):

app('App\Http\Controllers\ApiPostController')->getTest();

但最终,我建议将您要重用的代码移至共享库中。

© www.soinside.com 2019 - 2024. All rights reserved.