2012-12-18 23 views
7

Guzzle khách hàng tạo ra theo mặc định từ mã nàygửi mảng qua chuỗi truy vấn trong bửa tiệc ăn

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

url này

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

thực hành tốt nhất để gửi mảng trong chuỗi truy vấn trong ứng dụng RESTful là gì? Câu hỏi là, làm thế nào tôi có thể xác định ở phía máy chủ cho dù c,d là một chuỗi hoặc một mảng? Tốt hơn không nên gửi mảng bằng dấu ngoặc vuông, ví dụ: a[]=c&a[]=d? Làm thế nào tôi có thể đặt Guzzle để sử dụng dấu ngoặc vuông? Hoặc tốt hơn là sử dụng các biến được mã hóa JSON? Ở phía máy chủ, tôi đang sử dụng Tonic.

+0

Tôi quan tâm tương tự – finishingmove

Trả lời

2

Có vẻ như câu trả lời là here.

tôi muốn làm một cái gì đó giống như ?status[]=first&status[]=second

Bạn có thể làm điều này trong bửa tiệc ăn như thể hiện trong các liên kết ở trên:

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

Giải pháp làm việc:

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

Bây giờ bạn có cùng tên thông số trong yêu cầu của bạn.

Dung.

Nguồn: http_build_query with same name parameters

Các vấn đề liên quan