11

Guzzleクライアントはデフォルトでこのコードから作成します

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

このURL

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

RESTfulアプリケーションでクエリ文字列で配列を送信するベストプラクティスは何ですか? 問題は、サーバー側c,dで文字列か配列かを判断するにはどうすればよいかということです。たとえば、角括弧を使用して配列を送信する方がよいのではないa[]=c&a[]=dでしょうか? 角括弧を使用するように Guzzle を設定するにはどうすればよいですか? または、JSON でエンコードされた変数を使用する方がよいでしょうか? サーバー側ではTonicを使用しています。

4

5 に答える 5

5

作業ソリューション:

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

これで、リクエストに同じ名前のパラメーターが含まれるようになりました。

糞。

ソース:同じ名前のパラメーターを持つ http_build_query

于 2016-02-19T16:07:28.147 に答える
4

答えはここにあるようです。

私は何かをしたかった?status[]=first&status[]=second

上記のリンクに示されているように、Guzzle でこれを行うことができます。

$client = new Client('http://test.com/api');    
$request = $client->get('/resource');    
$query = $request->getQuery();    
$query->set('status', array('first', 'second'));
于 2013-04-12T20:14:16.033 に答える