Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Laravel 5.4从API端点检索JSON?_Laravel_Api_Laravel 5 - Fatal编程技术网

如何使用Laravel 5.4从API端点检索JSON?

如何使用Laravel 5.4从API端点检索JSON?,laravel,api,laravel-5,Laravel,Api,Laravel 5,我有两个使用Laravel 5.4制作的项目: Prj-1是一个返回JSON的Restful API Prj-2是一个使用上述端点的网站 通过这种方式,我从Prj-1获得了以下端点: myAPI.com/city以JSON格式返回数据库中所有城市的列表 在Prj-2内,我有以下信息: Route: Route::get('/showCityAPItest','AddressController@getcity'); Controller: use Illuminate\Http\Reques

我有两个使用Laravel 5.4制作的项目:

  • Prj-1是一个返回JSON的Restful API
  • Prj-2是一个使用上述端点的网站
  • 通过这种方式,我从Prj-1获得了以下端点: myAPI.com/cityJSON格式返回数据库中所有城市的列表

    在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);
        }
    
    如果我在浏览器中直接使用URL(),它就会工作。我可以像预期的那样看到JSON。 但是当我试图从Prj-2中检索它时,我在浏览器中看不到它

    其实我明白了

    404 Not Found
    nginx/1.10.1 (Ubuntu)
    
    我一直在关注这个,但我不知道我做错了什么


    有什么帮助吗?

    您所指的答案是关于内部路线。对于这样的外部地址,您不能使用
    请求
    路由
    外观。相反,使用Guzzle()从第二个站点发送请求。

    您所指的答案是关于内部路由。对于这样的外部地址,您不能使用
    请求
    路由
    外观。相反,使用Guzzle()从第二个站点发送请求。

    是的,@Joel Hinz是对的。请求将在同一个项目api端工作。 你需要使用GuzzleHttp。 第一步。使用composer安装guzzle。composer的Windows基本操作guzzle命令:

    composer require 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);
    } 
    

    是的,乔尔·辛兹是对的。请求将在同一个项目api端工作。 你需要使用GuzzleHttp。 第一步。使用composer安装guzzle。composer的Windows基本操作guzzle命令:

    composer require 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);
    }