2012-12-18 20 views
7

Guzzle klienta tworzy domyślnie z tym kodemwysyłania tablicę poprzez ciąg kwerendy w chlać

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

ten URL

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

Jaka jest najlepsza praktyka wysłać tablicę w ciągu kwerendy w relaksującego aplikacji? Pytanie brzmi, jak określić po stronie serwera, czy c,d jest ciągiem lub tablicą? Czy nie lepiej jest wysyłać tablice za pomocą nawiasów kwadratowych, np. a[]=c&a[]=d? Jak ustawić Guzzle w nawiasach kwadratowych? Lub lepiej jest użyć zmiennych kodowanych JSON? Po stronie serwera używam Tonic.

+0

Jestem zainteresowany tym samym – finishingmove

Odpowiedz

2

Wygląda na to, że odpowiedź brzmi: here.

chciałem zrobić coś podobnego ?status[]=first&status[]=second

Można to zrobić w chlać jak pokazano w linku powyżej:

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

Roztwór roboczy:

$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]); 

Teraz masz taką samą nazwę parametry w twoim żądaniu.

Nawóz.

Źródło: http_build_query with same name parameters