我正在开发Lumen+Laravel应用程序,其中Lumen是我的RESTful API,而我的Laravel是web应用程序本身。
Laravel 5.2.0
流明5.1.6
我已经在我的Laravel网络应用程序上安装了guzzlehttp,用于API请求(get,post,delete,put)。每当我做一个GET请求时,当我从我的Lumen API检索时,我会得到一个Server error: 'GET http://example.local/api/blog' resulted in a '500 Internal Server Error' response:
。但当我通过PostMan进行请求时,即使我直接在浏览器上输入http://example.local/api/blog
,我也能成功地检索数据,得到json响应。
流明获取:
public function getBlogs()
{
return response()->json($this->sqlConnection()->table(self::TABLE_NAME)->get(), 200);
}
Laravel:
public function index(Client $client)
{
return $client->get('http://example.local/api/blog')->getBody();
}
我确实用不同的框架构建了其他RESTful API,并试图测试我的Laravel web应用程序是否可以连接,并且它能够连接。我觉得这很奇怪,因为通过我的Lumen API连接总是返回500内部服务器错误。
经过数小时的调试,我终于找到了答案。在.env
文件上,似乎与以下行有冲突:
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
我在我的Laravel网络应用程序上删除了这些,现在我可以从我的Lumen API获得响应了!!!(万岁!)但我想知道,有人知道Laravel为什么会得到这些环境变量吗?当我的API不是Lumen框架时,当这些行打开时,我不会遇到任何问题。当我的API是Lumen时,就会发生这种情况。我觉得Laravel使用这些变量很奇怪。
此外,为什么我的Lumen API会从我的Laravel .env
文件中分享或获得价值?
流明环境:
API_USERNAME=lumentest
API_PASSWORD=lumenpassword
Laravel.env:
API_USERNAME=laraveltest
API_PASSWORD=laravelpassword
每当我的Laravel在我的Lumen上提出请求时,它都会从我的Laravel应用程序中获取API_USERNAME和API_PASSWORD,而不是在Lumen上。