Mira nuestra reseña de las mejores 7 librerias de cliente http para PHP

Top 7: Mejores librerias de Clientes HTTP para PHP

Muchas aplicaciones web dependen de servicios proporcionados por aplicaciones de terceros a través de API REST. Esas aplicaciones ofrecen ciertos puntos finales donde puede recuperar, actualizar o eliminar información de acuerdo con los datos, el método de tu solicitud, etc. Sin embargo, esto no se puede hacer en tu servidor sin un cliente Http decente que ejecute las solicitudes por ti. Hay muchas librerias que logran esto, entonces, ¿cuál es la adecuada para ti? De acuerdo con tus requisitos, debes tomar una decisión por tí mismo en función de las características que ofrece la libreria. En este artículo, compartiremos contigo las mejores 7 librerias cliente Http para PHP que te ayudarán a comunicarte con aplicaciones de todo el mundo a través de API fácilmente.

7. Yii2 Httpclient

Github

Yii2 Httpclient es una extensión de Yii Framework y te permite implementar un cliente Http útil con un par de líneas de código. Para enviar solicitudes HTTP, necesitarás crear una instancia de [[ yii httpclient Client]] y usar el método createRequest () para crear una nueva solicitud HTTP. Luego, debes configurar todos los parámetros de solicitud de acuerdo con tu objetivo y enviar la solicitud. Como resultado, obtendrás una instancia de [[ yii httpclient Response]], que contiene toda la información y los datos de respuesta. Por ejemplo:

use yiihttpclientClient;

$client = new Client();
$response = $client->createRequest()
    ->setMethod('POST')
    ->setUrl('http://example.com/api/1.0/users')
    ->setData(['name' => 'John Doe', 'email' => '[email protected]'])
    ->send();
if ($response->isOk) {
    $newUserId = $response->data['id'];
}

6. Buzz

Github

Buzz es una libreria ligera de PHP 5.3 para emitir solicitudes HTTP. Buzz fue creado por Kris Wallsmith en 2010. El proyecto se hizo muy popular a lo largo de los años con más de 7 millones de descargas. Desde agosto de 2017, Tobias Nyholm mantiene esta libreria. La idea de Buzz seguirá siendo la misma, deberíamos tener una API simple e imitar el comportamiento del navegador para facilitar las pruebas. No debemos reinventar la rueda y no debemos ser tan poderosos y flexibles como otros clientes (es decir, Guzzle). Sin embargo, nos tomamos muy en serio el rendimiento.

Nos encantan los PSR y esta es una lista de deseos de los PSR que nos gustaría apoyar:

  • PSR-1 (estilo de código)
  • PSR-2 (estilo de código)
  • PSR-4 (carga automática)
  • PSR-7 (mensajes HTTP)
  • PSR-15 (middlewares HTTP)
  • PSR-17 (fábricas HTTP)
  • PSR-18 (cliente HTTP)

La sintaxis de Buzz es amigable y fácil de escribir:

<?php

$browser = new BuzzBrowser();
$response = $browser->get('http://www.google.com');

echo $browser->getLastRequest()."
";
// $response es un objeto. 
// puedes usar $response->getContent() o $response->getHeaders() to get only one part of the response.
echo $response; 

5. Requests

Github

Requests es una libreria HTTP escrita en PHP exclusivamente para que sea fácil de usar. Se basa aproximadamente en la API de la excelente libreria Requests Python. Requests tiene licencia ISC (similar a la nueva licencia BSD) y no tiene dependencias, excepto PHP 5.2+. A pesar del uso de PHP como lenguaje para la web, sus herramientas para enviar solicitudes HTTP son muy deficientes. cURL tiene una API interesante, por decir lo menos, y no siempre puedes confiar en que esté disponible. Los sockets solo proporcionan acceso de bajo nivel y requieren que tu mismo crees la mayor parte de la respuesta HTTP analizándola. Su sintaxis es bastante amigable y fácil de usar:

$headers = array('Accept' => 'application/json');
$options = array('auth' => array('user', 'pass'));
$request = Requests::get('https://api.github.com/gists', $headers, $options);

var_dump($request->status_code);
// int(200)

var_dump($request->headers['content-type']);
// string(31) "application/json; charset=utf-8"

var_dump($request->body);
// string(26891) "[...]"

Requests te permite enviar solicitudes HEAD, GET, POST, PUT, DELETE y PATCH HTTP. Puedes agregar encabezados, datos de formulario, archivos de varias partes y parámetros con matrices simples y acceder a los datos de respuesta de la misma manera. Requests usa cURL y fsockopen, dependiendo de lo que tu sistema tenga disponible, pero abstrae todas las cosas desagradables fuera de tu camino, proporcionando una API consistente.

4. Httplug

Github

PHP-HTTP es el siguiente paso en la estandarización de la interacción HTTP para paquetes PHP. Se basa en PSR-7, que define interfaces para solicitudes y respuestas HTTP. Sin embargo, el PSR-7 no describe la forma en que debe crear solicitudes o enviarlas. PHP-HTTP tiene como objetivo llenar ese vacío ofreciendo una interfaz de cliente HTTP: HTTPlug.

PHP-HTTP tiene tres objetivos:

  1. Anima a los desarrolladores de paquetes a depender de la interfaz HTTPlug simple en lugar de clientes HTTP concretos.
  2. Proporciona paquetes de buena calidad relacionados con HTTP a la comunidad PHP.
  3. Con el tiempo, convierte HTTPlug en una recomendación de estándares PHP (PSR) para que los clientes implementen directamente la interfaz HTTPlug y nuestros adaptadores ya no sean necesarios.

HTTPlug se extrae de los clientes HTTP escritos en PHP, ofreciendo una interfaz simple. También proporciona un sistema de complementos independiente de la implementación para construir canalizaciones independientemente de la implementación del cliente HTTP utilizada.

3. Httpful

Github

Httpful es una libreria PHP simple, encadenable y legible destinada a hacer que hablar HTTP sea sano. Permite al desarrollador centrarse en interactuar con las API en lugar de examinar las páginas curl set_opt y es un cliente REST PHP ideal. Características de Httpful:

  • Compatibilidad con métodos HTTP legibles (GET, PUT, POST, DELETE, HEAD y OPTIONS)
  • Encabezados personalizados
  • Análisis automático "inteligente"
  • Serialización automática de carga útil
  • Autenticación básica
  • Autenticación del certificado del lado del cliente
  • Solicitar "Plantillas"
// Realiza una solicitud a la API de Github
// el header de "X-Trvial-Header: Solo como demostración!".
$url = "https://api.github.com/users/nategood";
$response = HttpfulRequest::get($url)
    ->expectsJson()
    ->withXTrivialHeader('Just as a demo')
    ->send();
 
echo "{$response->body->name} joined GitHub on " .
                        date('M jS', strtotime($response->body->created_at)) ."
";

2. Unirest PHP

Github

Unirest es un conjunto de librerias HTTP ligeras disponibles en varios idiomas, construido y mantenido por Mashape, quien también mantiene la API Gateway Kong de código abierto. Esta libreria incluye:

  • Métodos de utilidad para llamar a solicitudes GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH
  • Admite parámetros de formulario, carga de archivos y entidades corporales personalizadas
  • Soporta gzip
  • Admite autenticación básica, implícita, negociada y NTLM de forma nativa
  • Tiempo de espera personalizable
  • Encabezados predeterminados personalizables para cada solicitud (DRY)
  • Análisis JSON automático en un objeto nativo para respuestas JSON
$headers = array('Accept' => 'application/json');
$query = array('foo' => 'hello', 'bar' => 'world');

$response = UnirestRequest::post('http://mockbin.com/request', $headers, $query);

$response->code;        // Codigo de estado HTTP
$response->headers;     // Headers
$response->body;        // body analizado
$response->raw_body;    // body no analizado

1. Guzzle

Github

Guzzle es un cliente HTTP de PHP que facilita el envío de solicitudes HTTP y simplifica la integración con los servicios web. Características de Guzzle:

  • Interfaz simple para crear cadenas de consulta, solicitudes POST, transmitir grandes cargas, transmitir grandes descargas, usar cookies HTTP, cargar datos JSON, etc.
  • Puedes enviar solicitudes sincrónicas y asincrónicas utilizando la misma interfaz.
  • Utiliza interfaces PSR-7 para solicitudes, respuestas y transmisiones. Esto te permite utilizar otras librerias compatibles con PSR-7 con Guzzle.
  • Abstrae el transporte HTTP subyacente, lo que te permite escribir código independiente del entorno y del transporte; es decir, sin dependencia estricta de cURL, flujos de PHP, sockets o bucles de eventos sin bloqueo.
  • El sistema de middleware te permite aumentar y componer el comportamiento del cliente.
$client = new GuzzleHttpClient();
$res = $client->request('GET', 'https://api.github.com/user', [
    'auth' => ['user', 'pass']
]);
echo $res->getStatusCode();
// "200"
echo $res->getHeader('content-type');
// 'application/json; charset=utf8'
echo $res->getBody();
// {"type":"User"...'

Si conoces otra libreria cliente Http impresionante para PHP, compártela con la comunidad en el cuadro de comentarios.


Ingeniero de Software Senior en EPAM Anywhere. Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores