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.
Puedes usar Httpful:
Sitio web: http://phphttpclient.com/
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'');