guzzlehttp consumir php http laravel request

php - consumir - laravel api



Hacer solicitudes HTTP desde Laravel a una API externa (6)

Lo que quiero es obtener un objeto de una API con una solicitud HTTP (por ejemplo, AJAX de jQuery) a una API externa. ¿Como empiezo? Investigué sobre Mr Google pero no encuentro nada que me ayude.

Estoy empezando a preguntarme si esto es posible? En esta publicación, Laravel 4 hace una solicitud desde el controlador a la URL externa con datos , parece que se puede hacer. Pero no hay ningún ejemplo ni fuente donde encontrar documentación.

¿Por favor, ayúdame?


¿Quiere simplemente llamar a una URL externa y usar los resultados? PHP lo hace de la caja, si estamos hablando de una simple solicitud GET a algo que sirve JSON:

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

Si desea hacer una solicitud posterior, es un poco más difícil, pero hay muchos ejemplos de cómo hacerlo con curl.

Así que supongo que la pregunta es; exactamente, que es lo que quieres?


Basado en la respuesta a una pregunta similar aquí: https://.com/a/22695523/1412268

Eche un vistazo a 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", ....


Podemos usar el paquete Guzzle en Laravel, es un cliente PHP HTTP para enviar solicitudes HTTP.

Puedes instalar Guzzle a través del compositor

composer require guzzlehttp/guzzle:~6.0

O puede especificar Guzzle como una dependencia en el compositor existente de su proyecto. Json

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

Código de ejemplo en laravel 5 usando Guzzle como se muestra a continuación,

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"...'' }


Puede realizar solicitudes utilizando Laravel y sin paquetes externos

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

Se proporciona funcionalidad de solicitud porque Laravel depende del paquete de solicitud de Symfony.



Si solo necesita activar la solicitud a una API externa, puede usar la clase de solicitud de Laravel de la siguiente manera (suponiendo que use la solicitud GET)

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

Pero si necesita obtener el contenido de la respuesta, puede usar el paquete Laracurl siguiente manera:

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