从Laravel执行HTTP请求到外部API

我想要的是从具有HTTP(例如,jQuery的AJAX)请求的API获取对象到外部api。 我如何开始? 我研究过Google先生,但是我找不到任何帮助。

我开始怀疑这是甚至可能的? 在这篇文章中, Laravel 4用控制器向外部url发送请求,看起来好像可以完成。 但是没有例子,也没有任何资料来源可以find一些文件。

请帮我吗?

基于类似的问题的答案在这里: https : //stackoverflow.com/a/22695523/1412268

看看Guzzle

$client = new GuzzleHttp\Client(); $res = $client->get('https://api.github.com/user', ['auth' => ['user', 'pass']]); echo $res->getStatusCode(); // 200 echo $res->getBody(); // { "type": "User", .... 

我们可以在Laravel中使用Guzzle包,它是一个发送HTTP请求的PHP HTTP客户端。

您可以通过composer php安装Guzzle

 composer require guzzlehttp/guzzle:~6.0 

或者您可以在项目现有的composer.json中将Guzzle指定为依赖项

 { "require": { "guzzlehttp/guzzle": "~6.0" } } 

如下所示,使用Guzzle的laravel 5中的代码示例,

 use GuzzleHttp\Client; class yourController extends Controller { public function saveApiData() { $client = new Client(); $res = $client->request('POST', 'https://url_to_the_api', [ 'form_params' => [ 'client_id' => 'test_id', 'secret' => 'test_secret', ] ]); echo $res->getStatusCode(); // "200" echo $res->getHeader('content-type'); // 'application/json; charset=utf8' echo $res->getBody(); // {"type":"User"...' } 

你只是想调用一个外部URL并使用结果? PHP开箱即用,如果我们正在谈论一个简单的GET请求来提供JSON服务:

 $json = json_decode(file_get_contents('http://host.com/api/stuff/1'), true); 

如果你想做一个post请求,这有点困难,但有大量的例子如何做到这一点curl。

所以我想这个问题是。 你究竟想要什么?

如果您只需要将请求发送到外部API,则可以使用Laravel Request类(假设您使用GET请求)

 $request = Request::create('http://your-api.com', 'GET'); 

但是,如果您需要获取响应的内容,则可以使用Laracurl软件包,如下所示:

 $response = Laracurl::get('http://your-api.com'); 

你可以使用Httpful:

网站: http : //phphttpclient.com/

Github: https : //github.com/nategood/httpful

您可以使用Laravel进行请求,而无需使用外部软件包

 $request = \Illuminate\Http\Request::create('http://your-api.com', 'POST', ['param1' => 'value1', 'param2' => 'value2']); 

提供请求function是因为Laravel依赖于Symfony的Request包。