guzzlehttp example ejemplo docs cliente php rest client

php - ejemplo - guzzlehttp client example



Clientes PHP REST (8)

ejemplo simple en php para el cliente en reposo - la actualización se da a continuación:

<?php $url ="http://example.com"; $data = "The updated text message"; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); //for updating we have to use PUT method. curl_setopt($ch,CURLOPT_POSTFIELDS,$data); $result = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); ?>

ejemplo simple en php para el cliente de reposo - la eliminación de categoryid = xx se da a continuación:

<?php $url ="http://example.com/categoryid=xx"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); $result = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); ?>

Estoy intentando conectarme a un servicio web RESTful, pero estoy teniendo algunos problemas, especialmente cuando envío datos a través de PUT y DELETE. Con cURL, PUT requiere un archivo para enviar, y DELETE es simplemente extraño. Soy perfectamente capaz de escribir un cliente utilizando el soporte de socket de PHP y escribiendo los encabezados HTTP, pero quería saber si alguna vez han usado o visto un cliente REST para PHP.


Al resucitar el tema, encontré que esta biblioteca https://github.com/Respect/Rest/ es muy fácil de usar, pero hay pocos ejemplos en la web:

require_once ''bootstrap.php''; require_once ''Respect/Rest/Router.php''; require_once ''Respect/Rest/Request.php''; use Respect/Rest/Router; $router->post(''/myApp/'', function() { $data_back = json_decode(file_get_contents(''php://input'')); // var_dump($data_back); return json_encode($data_back); }); $router->get(''/myApp/*'', function($id = null) { $json = json_encode(MyService::getInstance()->list()); return utf8_encode($json); }); $router->put(''/myApp/*'', function($id = null) { return ''Update: '' . $id; }); $router->delete(''/myApp/*'', function($id = null) { return ''Delete: '' . $id; });


Como resultado, Zend_Rest_Client no es un cliente REST en absoluto, no admite los métodos PUT y DELETE, por ejemplo. Después de intentar convertirlo en un trabajo con un servicio RESTful real, me cansé y escribí un cliente REST apropiado para PHP:

http://github.com/educoder/pest

Aún faltan algunas cosas, pero si se detecta, pondré más trabajo en ello.

Aquí hay un ejemplo de uso con el servicio REST de OpenStreetMap:

<?php /** * This PestXML usage example pulls data from the OpenStreetMap API. * (see http://wiki.openstreetmap.org/wiki/API_v0.6) **/ require_once ''PestXML.php''; $pest = new PestXML(''http://api.openstreetmap.org/api/0.6''); // Retrieve map data for the University of Toronto campus $map = $pest->get(''/map?bbox=-79.39997,43.65827,-79.39344,43.66903''); // Print all of the street names in the map $streets = $map->xpath(''//way/tag[@k="name"]''); foreach ($streets as $s) { echo $s[''v''] . "/n"; } ?>

Actualmente utiliza curl pero puedo cambiarlo a HTTP_Request o HTTP_Request2 en la línea.

Actualización: Parece que algunas personas han saltado en esto. Pest ahora tiene soporte para autenticación HTTP y un montón de otras características gracias a los colaboradores de GitHub.


Escribí un cliente PHP PHP llamado Guzzle. Guzzle es un cliente y marco HTTP para construir clientes de servicios web REST. Puede encontrar más información sobre Guzzle en su website o ir directamente a la fuente en github: https://github.com/guzzle/guzzle

Guzzle proporciona golosinas que proporcionan la mayoría de los clientes HTTP (una interfaz más simple, todos los métodos HTTP y ver la solicitud / respuesta), pero también ofrece otras características avanzadas:

  • transmisión de cuerpos de entidad
  • retroceso exponencial
  • un proxy de caché incorporado incorporado
  • galletas
  • explotación florestal
  • conexiones persistentes administradas
  • solicitudes paralelas
  • OAuth
  • una arquitectura de complemento que le permite implementar esquemas de autenticación arbitrarios
  • Autogeneración de una API de cliente a partir de un archivo de descripción de servicio JSON

El único inconveniente: Requiere PHP 5.3.3





Una reciente llegada es Zend/Http/Client , parte de Zend Framework 2.

Instalable a través de compositor (aunque, a partir de este escrito, no a través de Packagist, todavía necesita usar el repositorio de paquetes personalizado de Zend http://packages.zendframework.com/ ).