2012-02-16 9 views
14

Szukam zaimplementować klienta REST w PHP, a wcześniej używałem zmodyfikowanej wersji CakePHP Webservice Behavior, która jest bardzo zbliżona do tego, czego szukam, ale nie buduję na Cake, więc to jest poza lista.Prosty, ale ustalony/kompletny klient REST dla PHP?

Szukam klienta REST, który pozwala mi na podstawowe żądania REST i odzyskać nagłówki/treść żądania. Opcjonalne, ale pożądane cechy:

  • podstawowego uwierzytelniania HTTP
  • Poniższe przekierowania
  • kopii off i ponowne zainteresowanie nieudanych żądań

czytałem przez otherSOthreads i znaleźli garść niepomocnych odpowiedzi, które składają się głównie z "po prostu napisz to sam, nie jest trudno" lub "użyj cURL" (tj. tego samego co poprzedni) lub "tutaj jest fragment kodu, który to zrobi" (na pewno nie jest ustalony lub solidny) . This question jest najbardziej potencjalnie pomocny, ale ma powyższe, plus dwa self-rolledlibraries opublikowane przez ich autorów, które są bardzo podstawowe i brakuje niektórych z powyższych funkcji i, chociaż prawdopodobnie zmyślą, są prawie tak ustalone lub utrzymane tak jak bym chciał.

To pytanie również zawiera link do Guzzle, który ma przeciwny problem - podczas gdy jest solidny i dobrze obsługiwany, wydaje się być bardzo skomplikowany, trudny do skonfigurowania i skonfigurowania, a także o wiele bardziej zaawansowany niż szukam.

A więc: czy ktoś wie o istnieniu klienta REST dla PHP, który po prostu wykonuje żądania REST, jest mały i skupiony (myślę o jednym, może dwóch plikach PHP), ale jest szeroko stosowany i obsługiwany? Nie szukam ramy ani rewolucji w korzystaniu z protokołu HTTP - wystarczy biblioteka do wykonywania podstawowych żądań REST. Nie chcę ponownie wymyślać koła znowu, i przy tysiącach (jeśli nie milionach) projektów PHP, które używają REST każdego dnia, jestem zaskoczony, że nie znalazłem czegoś takiego.

Dostępnych jest wiele wysokiej jakości bibliotek serwerów REST - dlaczego nie klienci REST? Zasadniczo szukam czegoś takiego jak Tonic, ale jako klient. Pest (z góry) wygląda na dobrze zbudowanego i jest najbliżej, ale jestem zaskoczony, że nie ma czegoś więcej.

+0

Przypomnienie przypomniało mi, że nigdy nie przyjąłem odpowiedzi tutaj. Skończyło się na tym, że używałem [Pest] (https://github.com/educoder/pest) jako powiązanego z moim pytaniem - działa dobrze, bez zbytniego fanfaru lub dodatkowego kodu, którego nie używam. Skończyło się na tym, że po prostu nie wprowadzałem wykładniczego wycofywania, ale jeśli będę musiał, sprawię, że Guzzle będzie inny. – cincodenada

Odpowiedz

11

Istnieje wiele zaawansowanych funkcji w Guzzle, ale nadal uważam, że można z łatwością używać go do swoich minimalnych wymagań.

  1. Pobierz plik Phar że zawiera wszystkie klasy, które musisz ze swojej strony uwalnianiu GitHub: https://github.com/guzzle/guzzle/releases
  2. dołączyć plik Phar w aplikacji (będzie skonfigurować autoloadera dla chlać)
  3. Tworzenie klient
  4. Dołączanie ExponentialBackoffPlugin do klienta
  5. wysyłać żądania od klienta

Przykład:

<?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

Dobra odpowiedź, bardzo łatwa do zrozumienia. –

+0

Gdzie mogę pobrać plik guzzle.phar? – BILL

+0

Link jest uszkodzony, ale możesz znaleźć plik guzzle.phar dla każdego wydania tutaj: https://github.com/guzzle/guzzle/releases – w5m

6

Możesz spojrzeć na Requests lub nawet na HTTP PECL library. Dotyczą one jednak tylko procesu żądania/odpowiedzi HTTP. Może szukasz więcej? Projekt REST tak bardzo krzyżuje się z protokołem HTTP, że nie ma więcej abstrakcji, którą można zbudować na nim.

-2

cURL jest dość szczegółowy, PHAR wymaga mnóstwa konfiguracji. Jeśli chcesz naprawdę prostą opcję REST, spróbuj tego:

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