2012-02-16 14 views
14

Estoy buscando implementar un cliente REST en PHP, y he usado previamente una versión modificada del CakePHP Webservice Behavior, que está bastante cerca de lo que estoy buscando, pero no estoy construyendo sobre Cake, así que eso está fuera de lo normal. lista.Cliente REST simple pero establecido/completo para PHP?

Estoy buscando un cliente REST que me permita realizar solicitudes REST básicas y recuperar los encabezados/cuerpo de la solicitud. Las características opcionales, pero deseados:

  • autenticación básica HTTP
  • redirecciones siguientes
  • Retroceder y volver a solicitar de solicitudes fallidas

que he leído a través otherSOthreads y han encontrado una un montón de respuestas inútiles que consisten principalmente en "solo escríbelo usted mismo, no es difícil" o "use cURL" (es decir, el mismo que el anterior) o "aquí hay un fragmento de código que lo hará" (ciertamente no establecido o robusto) . This question es el más potencialmente útil, pero tiene lo anterior, más dos self-rolledlibraries publicados por sus autores que son muy básicos y faltan algunas de las características anteriores y, aunque probablemente lo solucionarían, apenas se han establecido o mantenido. como me gustaría

Esa pregunta también vincula a Guzzle, que tiene el problema opuesto: a pesar de ser robusto y bien soportado, parece ser muy complejo, difícil de configurar y configurar, y mucho más de lo que estoy buscando.

Entonces, ¿alguien sabe de un cliente REST establecido para PHP que solo hace solicitudes REST, es pequeño y está enfocado (estoy pensando en uno, quizás dos archivos PHP), pero es ampliamente utilizado y soportado? No estoy buscando un marco o una revolución en el uso de HTTP, solo una biblioteca para hacer las solicitudes de REST básicas. No quiero reinventar la rueda otra vez, y con los miles (si no millones) de proyectos PHP que usan REST todos los días, me sorprende que no haya encontrado algo como esto.

Hay muchas bibliotecas de servidores REST de calidad disponibles, ¿por qué no los clientes REST? Básicamente estoy buscando algo como Tonic, pero como cliente. Pest (desde arriba) se ve bien construido, y está más cerca, pero estoy sorprendido de que no haya algo más establecido.

+0

Un upvote me recordó que nunca acepté una respuesta aquí. Terminé usando [Pest] (https://github.com/educoder/pest) como está vinculado en mi pregunta, hace bien el trabajo, sin mucha fanfarria o código adicional que no estoy usando. Sin embargo, terminé simplemente sin implementar el retroceso exponencial; si es necesario, le daré a Guzzle otra mirada. – cincodenada

Respuesta

11

Hay muchas funciones avanzadas en Guzzle, pero sigo pensando que puede usarlas fácilmente para sus necesidades mínimas.

  1. Descargar el archivo Phar que incluye todas las clases que necesita de su página de comunicados de GitHub: https://github.com/guzzle/guzzle/releases
  2. Incluya el archivo Phar en su aplicación (esto configurará un cargador automático para Guzzle)
  3. Crear un cliente
  4. Adjuntar una ExponentialBackoffPlugin al cliente
  5. enviar solicitudes desde el cliente

Ejemplo:

<?php 

// Include the phar and register the autoloader 
require 'guzzle.phar'; 

// Create a client for http://test.com (binding to a host is optional) 
$client = new Guzzle\Http\Client('http://test.com'); 

// Attach the exponential backoff plugin to the client so that requests 
// are retried automatically 
$client->addSubscriber(Guzzle\Plugin\Backoff\BackoffPlugin::getExponentialBackoff()); 

// Create and send a GET request to grab the response 
$response = $client->get('/foo.json')->send(); 

// Dump the JSON response data as an array 
var_dump($response->json()); 
+0

Buena respuesta, muy fácil de entender. –

+0

¿Dónde puedo descargar guzzle.phar? – BILL

+0

El enlace está roto, pero puede encontrar un archivo guzzle.phar para cada versión aquí: https://github.com/guzzle/guzzle/releases – w5m

6

Puede consultar Requests o incluso el HTTP PECL library. Sin embargo, estos solo están relacionados con el proceso de solicitud/respuesta HTTP. Usted puede estar buscando más que eso? El diseño REST se cruza tanto con el protocolo HTTP que no hay mucha más abstracción que puede construirse sobre.

-2

cURL es bastante detallado, PHAR requiere un montón de configuración. Si desea una opción de REST realmente simple, intente esto:

print file_get_contents ('http://php.net/');