把代理处理器交给 BigQuery PHP 的 REST 与认证钩子
对于 google/cloud-bigquery 1.39.3,当 REST 与认证两条路径都需要中间层时,把同一个 callable 同时交给 httpHandler 和 authHttpHandler。
google/cloud-bigquery 1.39.3 中负责 REST 投递和令牌请求的钩子可以共用一个感知代理的 PSR 请求处理器:
$proxy = 'http://proxy.example:8080';
$http = new \GuzzleHttp\Client();
$send = static function (
\Psr\Http\Message\RequestInterface $request,
array $options = []
) use ($http, $proxy) {
$options['proxy'] = $proxy;
return $http->send($request, $options);
};
$bigQuery = new \Google\Cloud\BigQuery\BigQueryClient([
'projectId' => $projectId,
'httpHandler' => $send,
'authHttpHandler' => $send,
]);该 callable 会为每个请求设置 Guzzle 的 proxy 选项,包括从HTTP 代理列表中选出的公共 HTTP 端点;构造函数把这个 callable 同时交给 httpHandler 和 authHttpHandler。这样既覆盖 REST 投递,也覆盖使用该钩子的认证请求。请保留受支持的凭据配置;如果凭据使用其他传输层,也需要检查那条链路。
通过 Guzzle 支持的代理配置补充必要的直连例外。请把 BigQuery API 端点保留为服务目的地:在 apiEndpoint 中填入代理地址会选中另一个服务,而不是配置这条路由。
这些是 BigQueryClient 的构造函数选项。它们既不会配置独立的 gRPC 通道,也不对应于独立库 Google API PHP Client 中 Google\Client 的 setHttpClient 接口。