2012-12-18 17 views
7

Guzzle Client erstellt standardmäßig von diesem CodeSenden Array über Query-String in guzzle

$client->get('https://example.com/{?a}', array('a' => array('c','d'))); 

diese URL

https://example.com/?a=c,d 

Was ist die beste Praxis Array in Query-String in RESTful Anwendung zu senden? Die Frage ist, wie kann ich auf der Serverseite feststellen, ob c,d eine Zeichenfolge oder ein Array ist? Ist es nicht besser, Arrays mit eckigen Klammern zu senden, z. a[]=c&a[]=d? Wie kann ich Guzzle auf eckige Klammern setzen? Oder ist es besser, JSON-codierte Variablen zu verwenden? Auf der Serverseite verwende ich Tonic.

+0

Ich interessiere mich für das gleiche – finishingmove

Antwort

2

Es scheint die Antwort ist here.

Ich wollte so etwas wie ?status[]=first&status[]=second

Sie können dies tun, in Guzzle tun, wie in den obigen Link dargestellt:

$client = new Client('http://test.com/api');  
$request = $client->get('/resource');  
$query = $request->getQuery();  
$query->set('status', array('first', 'second')); 
4

Arbeitslösung:

$vars = array('state[]' => array('Assigned','New'), 'per_page' => $perPage, 'page' => $pageNumber); 
$query = http_build_query($vars, null, '&'); 
$string = preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', $query); // state[]=Assigned&state[]=New 
$client = new Client([follow instruction to initialize your client ....]); 
$response = $client->request('GET', $uri, ['query' => $string]); 

Jetzt haben Sie denselben Namen Parameter in Ihrer Anfrage.

Dung.

Quelle: http_build_query with same name parameters