PHP DİNLENME Müşteriler [kapalı]

7 Cevap php

Ben bir sığınakta web hizmetine bağlanmaya çalışıyorum, ama ben PUT üzerinden veri gönderme ve DELETE, özellikle bazı sıkıntılar yaşıyorum. CURL ile, PUT göndermek için bir dosya gerektirir ve DELETE sadece garip. PHP'nin soket desteğini kullanarak ve HTTP başlıklarını kendim yazıyorum, bir istemci yazma mükemmel yetenekli değilim, ama siz hiç kullanılan veya PHP için REST istemci gördük olup olmadığını bilmek istedi?

7 Cevap

Çıkıyor gibi Yani, Zend_Rest_Client tüm REST istemci değil - PUT desteklemek ve örneğin yöntemleri silmez. Ben bıkmış ve PHP için uygun bir DİNLENME müşteri yazdı var gerçek bir sığınakta hizmeti ile çalışma içine kludge denedikten sonra:

http://github.com/educoder/pest

Hala bir şeyler eksik ama o aldı alırsa ben bunu biraz daha çalışma koyacağım.

İşte OpenStreetMap REST hizmete sahip bir kullanım örneği var:

<?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";
}

?>

Şu anda kıvırmak kullanır ama ben satır aşağı http_request veya HTTP_Request2 için geçiş olabilir.

Oldukça birkaç kişi bu atladı var gibi Update: görünüyor. Zararlı şimdi HTTP kimlik ve GitHub katkıda diğer özellikleri sayesinde bir grup için desteği vardır.

Ben Guzzle adında bir PHP HTTP istemcisi yazdı. Guzzle bir HTTP istemci ve DİNLENME Webcoder müşterilerine bina için çerçevedir. Bunu website üzerine guzzle hakkında daha fazla bilgi bulmak, ya da github kaynağına doğrudan gidebilirsiniz: https://github.com/guzzle/guzzle

Guzzle çoğu HTTP istemcileri (basit bir arayüz, HTTP tüm yöntemleri ve istek / yanıt görüntüleme) sağlayacak güzellikler sağlar, ama aynı zamanda diğer gelişmiş özellikleri sağlar:

  • akarsu varlık organları
  • üstel geri çekilme
  • dahili önbelleğe ileriye doğru proxy
  • kurabiye
  • günlüğü
  • yönetilen kalıcı bağlantılar
  • paralel istekleri
  • OAuth
  • Eğer rasgele bir kimlik doğrulama düzenleri uygulamaya izin veren bir eklenti mimarisi
  • JSON hizmet açıklama dosyasından bir istemci API Autogenerating

Tek dezavantajı: PHP 5.3.3 gerektirir

Ben sadece PHP'nin yerleşik cURL support kullanma eğiliminde. CURLOPT_CUSTOMREQUEST option allows you to do PUT / DELETE vs

Ben uzun bir süre için zarif bir çözüm bulmak mümkün değildi cURL uygulamaları gibi değildi, benim kendi ile geldi. Bu pecl http modülüne dayanıyor çünkü, vb PUT, HTTP kimlik doğrulamasını destekler yönlendirir.

Uygulama uzatmak kolay, güzel ve basit.

Daha fazla bilgi burada bulunabilir:

I Zend Rest Client ile iyi bir başarı elde ettik

Konuyu diriltmeyi, ben bu kütüphaneyi https://github.com/Respect/Rest/ kullanmak çok kolaydır, ancak web üzerinde birkaç örnek vardır bulundu:

    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;
 });

Bir yeni varış Zend Framework 2 Zend\Http\Client, bir parçasıdır.

Besteci ile kurulabilir (bu yazının yazıldığı gibi değil Packagist aracılığıyla rağmen; hala zerdüştlerin özel paket deposunu http://packages.zendframework.com/ kullanmak gerekir).