【发布时间】:2015-08-30 07:09:18
【问题描述】:
我正在使用 lumen 尝试通过 guzzle 设置简单的 api 请求。
问题是base_uri 参数似乎没有在初始new Client() 上正确传递。
简化示例:
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://siteurl.com/api/v2'
]);
然后通过get调用api
$res = $client->get('orders', [
'query' => [
'status' => 'completed'
]
]);
不起作用。我一直小心不要使用像/orders 这样的绝对网址。如果我完全绕过 base_uri 并将其添加到 get 方法 $client->get('https://siteurl.com/api/v2/orders') 中,它可以工作。
我正在使用: “laravel/流明框架”:“5.0.*”, "guzzlehttp/guzzle": "^6.0"
*跟进:
我添加了调试标志,以便比较标头,明显的区别在于获取请求行。
get方法中的绝对url(绕过base_uri):
GET /api/v2/orders?status=completed HTTP/1.1
使用 base_uri(正在剥离版本):
GET /api/orders?status=completed HTTP/1.1
【问题讨论】:
-
你有没有发现这个问题?我遇到了完全相同的问题,并且我的 base_uri 确实按照答案中的建议以 / 终止。
-
无视我的评论。我正在查看我的 guzzle 版本的错误文档。最新版本使用 base_uri,而我又回到了使用 base_url 的先前版本。
-
@PaulZepernick 我建议的修复对你有用吗?
-
@AvindraGoolcharan 我需要使用 base_url 而不是 base_uri。我正在查看最新的文档,它说要使用 base_uri,但我使用的是 5.3 版,所以我需要查看这个文档 docs.guzzlephp.org/en/5.3,它说要使用 base_url。在新版本中,密钥从 base_url -> base_uri 更改。