我有两个用Laravel 5.4制作的项目:
通过这种方式,我有来自Prj-1的跟随端点: myAPI.com/city 以 JSON 格式返回数据库中所有城市的列表。
在Prj-2里面我有以下内容:
Route:
Route::get('/showCityAPItest','AddressController@getcity');
Controller:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
...
public function getcity()
{
$request =Request::create('http://myAPI.com/city', 'GET');
$response = Route::dispatch($request);
dd($response);
}
如果我在浏览器中直接使用网址(http://myAPI.com/city),则可以使用。我可以按预期看到JSON。 当我尝试从Prj-2中检索它时,我无法在浏览器中看到它。
其实我看到了
404 Not Found
nginx/1.10.1 (Ubuntu)
我跟着这个post,但我不知道我做错了什么。
任何帮助?
答案 0 :(得分:1)
您所指的答案是谈论内部路线。您无法将Request
和Route
外观用于此类外部地址。相反,使用例如Guzzle(http://docs.guzzlephp.org/en/latest/)从第二个站点发送您的请求。
答案 1 :(得分:1)
是的,@ Joel Hinz是对的。请求将在同一项目api端中工作。
您需要使用GuzzleHttp。
步骤1.使用composer安装guzzle。适用于Windows的作曲者操作基本口舌命令
作曲家需要guzzlehttp / guzzle
步骤2编写以下代码
public function getcity()
{
$client = new \GuzzleHttp\Client;
$data =$client->request('GET', 'http://myAPI.com/city', [
'headers' => [
'Accept' => 'application/json',
'Content-type' => 'application/json'
]
]);
$x = json_decode($data->getBody()->getContents());
return response()->json(['msg' => $x], 200);
}