我当前正在设置一个新的laravel应用程序,该应用程序使用在同一服务器(专用服务器,而非共享主机)上托管的另一个laravel应用程序的api端点。
但是我无法正常工作以从api接收数据。
在此服务器上,我编辑了/ etc / hosts文件以创建指向API项目的URL。此网址称为just.engine,当我调用curl just.engine / api / test时,我得到了正确的响应,但是在laravel代码中,我收到了以下错误。
“客户端错误:GET just.engine/api/test
导致了404 Not Found
”
因此,我进行了一些研究,发现也许向食人鱼客户端添加Host标头可以解决此问题。客户端现在看起来像这样:
$client = new Client([
'base_uri' => 'http://127.0.0.1',
'headers' => [
'Host' => 'just.engine'
]
]);
但是仍然出现相同的问题。
laravel API路由如下所示:
Route::get('test', function() {
return 'test complete';
});
接收应用程序中的laravel代码使用
use GuzzleHttp\Client;
如下所示:
$client = new Client([
'base_uri' => 'http://127.0.0.1',
'headers' => [
'Host' => 'just.engine'
]
]);
$res = $client->request('GET', '/api/test');
if ($res->getStatusCode() == '200') {
return \GuzzleHttp\json_decode($res->getBody()->getContents());
}
当我调用代码时,它会返回
Client error: `GET http://127.0.0.1/api/test` resulted in a `404 Not Found` response: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" c (truncated...)
我希望看到的是:测试完成。就像我在终端中运行它时一样。
如果我运行curl just.engine/api/test
,它将按预期返回测试完成。