这是我在点击 url 时收到的错误消息 http://localhost:8000/test
cURL 错误 6:无法解析主机:api(请参阅 https://curl.haxx.se/libcurl/c/libcurl-errors.html)了解 api/test
出现此错误
cURL 错误 28:x 之后连接也超时
这里是定义 /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 失败。 api 端点在 POSTMAN 中工作正常。
版本 - PHP 8.2.12 — Laravel 11.27.2
我想像这样从 api 端点获取数据
{
"name": "X",
"address": "Y",
}
如果你改变
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();
但最终,我建议将您要重用的代码移至共享库中。
首先,问题无法解决,但这不是主要问题。但在收到这篇文章的评论后,我意识到为什么会发生这种情况。然后我遇到的首要问题是服务器在一定时间后让我超时。
好吧,问题是我用于 Laravel 的 php 默认服务器一次只能处理一个请求,所以当我通过 url 发出请求时,它无法一次处理多个请求(浏览器请求 + api 请求)所以我必须切换apache服务器,这解决了超时的问题。
#谢谢