2015-09-21 8 views
2

Есть ли способ глобально добавить form_params ко всем запросам с guzzle 6?По умолчанию form_params for guzzle 6

Например:

$client = new \GuzzleHttp\Client([ 
    'global_form_params' => [ // This isn't a real parameter 
     'XDEBUG_SESSION_START' => '11845', 
     'user_token' => '12345abc', 
    ] 
]); 

$client->post('/some/web/api', [ 
    'form_params' => [ 
     'some_parameter' => 'some value' 
    ] 
]); 

В моем идеальном мире post будет иметь результат array_merge-кий global_form_params и form_params:

[ 
    'XDEBUG_SESSION_START' => '11845', 
    'user_token' => '12345abc', 
    'some_parameter' => 'some value', 
] 

я могу увидеть также хочу что-то подобное для query или json

ответ

2

Согласно Creating a client вы можно установить «любое число вариантов запроса по умолчанию» и на GuzzleHttp\Client Source Code

$client = new Client['form_params' => [form values],]); 

бы применить form_params к каждому запросу.

Это может создать проблемы с запросами GET из-за изменения заголовка Content-Type в пределах Client::applyOptions. В конечном итоге это зависит от конфигурации сервера.

Если ваши намерения состоят в том, чтобы клиент выполнял как запросы GET, так и POST, вам может быть лучше обслуживать перемещение form_params в промежуточное программное обеспечение. Например:

$stack->push(\GuzzleHttp\Middleware::mapRequest(function (RequestInterface $request) { 
    if ('POST' !== $request->getMethod()) { 
     // pass the request on through the middleware stack as-is 
     return $request; 
    } 

    // add the form-params to all post requests. 
    return new GuzzleHttp\Psr7\Request(
     $request->getMethod(), 
     $request->getUri(), 
     $request->getHeaders() + ['Content-Type' => 'application/x-www-form-urlencoded'], 
     GuzzleHttp\Psr7\stream_for($request->getBody() . '&' . http_build_query($default_params_array)), 
     $request->getProtocolVersion() 
    ); 
}); 
+0

Я дал этот снимок, но я хотел объединить «default» form_params с тем, что указано в каждом запросе. Я думаю, что мое использование слова «default» неясно, я обновлю свой вопрос. –

+0

изменен, чтобы отразить желаемое "слияние" –

Смежные вопросы