在 Laravel 中使用 Guzzle 获取 API 响应

Getting API Response using Guzzle in Laravel

我正在尝试从 Metals API 获得响应,但尽管我可以使用 URL.

获得 API,但仍然收到 404 错误
    public function valueFromApi(){

    $accesskey = "123456";
    $client = new \GuzzleHttp\Client();
    $response = $client->request('POST', 'https://metals-api.com/api/latest', [
        'form_params' => [
            'access_key' => $accesskey,
            'base' => 'GBP',
            'symbols' => 'XAU',]
]);

dd($response);

}

如果我尝试直接通过浏览器访问 URL,这会起作用:

https://metals-api.com/api/latest?access_key=123456&base=GBP&symbols=XAU

我一定是误解了参数的工作方式。任何建议表示赞赏。

表单参数与查询参数不同。因此,您需要将参数设置为查询。如果您在浏览器中访问它,我不希望它是 POST 而是 GET。

$response = $client->request('GET', 'https://metals-api.com/api/latest', [
    RequestOptions::QUERY => [
        'access_key' => $accesskey,
        'base' => 'GBP',
        'symbols' => 'XAU',
    ]
]);

我正在使用 RequestOptions,这是硬编码字符串选项的语法糖,与 'query' 相同。

按照他们docs中的规定,你需要定义常量

    define("form_params", GuzzleHttp\RequestOptions::FORM_PARAMS );

然后你就可以使用你的代码了

$response = $client->request('POST', 'https://metals-api.com/api/latest', [
        'form_params' => [
            'access_key' => $accesskey,
            'base' => 'GBP',
            'symbols' => 'XAU',]
]);