base_uri不是基于guzzle客户端实例化

drr*_*nik 11 guzzle lumen

我正在使用流明试图通过guzzle设置简单的api请求.

问题是base_uri参数似乎没有在初始化时正确传递new Client().

简化示例:

use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://siteurl.com/api/v2'
]);
Run Code Online (Sandbox Code Playgroud)

然后通过get调用api

$res = $client->get('orders', [
    'query' => [
        'status' => 'completed'
    ]
]);
Run Code Online (Sandbox Code Playgroud)

不起作用.我一直小心不要使用绝对的网址/orders.如果我完全绕过base_uri并将其添加到get方法上$client->get('https://siteurl.com/api/v2/orders'),它就可以工作.

我正在使用:"laravel/lumen-framework":"5.0.*","guzzlehttp/guzzle":"^ 6.0"

*跟进:

我添加了调试标志,以便我可以比较标头,并且明显的区别在于获取请求行.

get方法中的绝对url(绕过base_uri):

GET/api/v2/orders?status =已完成HTTP/1.1

使用base_uri(版本被剥离):

GET/api/orders?status =已完成HTTP/1.1

Avi*_*ran 27

你需要使用正斜杠/终止你的base_uri

例如,

use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://siteurl.com/api/v2/'
]);
Run Code Online (Sandbox Code Playgroud)

编辑:请注意,base_uri适用于Guzzle 6+,而以前的版本使用base_url.

  • 你最后的评论是什么救了我.确认使用带有正斜杠的`base_url`结束url与Guzzle 5一起工作 (5认同)
  • 抱歉,无视我的最后评论。问题是相对网址不能以`/`开头。所以`$ request = GuzzleHttp \ Psr7 \ Request('GET','v1 / filter / active /');`可以正常工作。 (3认同)