我正在开发一个Lumen + Laravel应用程序,其中Lumen是我的RESTful API,而我的Laravel是Web应用程序本身。
Laravel 5.2.0
Lumen 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响应。
Lumen GET:
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内部服务器错误。
答案 0 :(得分:2)
经过几个小时的调试,我终于找到了答案。在.env
文件中,似乎与这些行存在冲突:
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
我在Laravel网络应用程序中删除了那些,我现在能够从我的Lumen API获得响应! (万岁!)但我想知道,有人知道为什么Laravel会获得这些环境变量吗?当我的API不是流明框架时,当这些行打开时,我没有遇到任何问题。它恰好发生在我的API是流明时。我很奇怪Laravel正在使用这些变量。
另外,为什么我的Lumen API会共享或从我的Laravel .env
文件中获取价值?
Lumen .env:
API_USERNAME=lumentest
API_PASSWORD=lumenpassword
Laravel .env:
API_USERNAME=laraveltest
API_PASSWORD=laravelpassword
每当我的Laravel在我的Lumen上发出请求时,它会从我的laravel应用程序获取API_USERNAME和API_PASSWORD,而不是Lumen。