从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包。