You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.8中如何使用GuzzleHttp改写Http门面请求代码

Laravel 5.8 下使用 GuzzleHttp 改写 Http 门面代码方案

Laravel 内置 Http 门面是 7.0 及以上版本才提供的功能,5.8 版本可通过 GuzzleHttp 实现完全等效的请求逻辑,改写步骤和代码如下:

  • 确认依赖安装
    如果还未安装 GuzzleHttp,先在项目根目录执行以下命令完成安装:
composer require guzzlehttp/guzzle
  • 改写后的业务代码
public function getAddress(Request $request)
{
    // 实例化客户端,对齐原代码的超时配置、默认错误处理行为
    $client = new \GuzzleHttp\Client([
        'timeout' => 15,
        'http_errors' => false,
    ]);

    // 发起GET请求,传入自定义请求头、查询参数
    $response = $client->get('https://api.sitename.org/v4/reverse', [
        'headers' => [
            'Api-Key' => 'api-key',
        ],
        'query' => [
            'lat' => $request->input('latitude'),
            'lng' => $request->input('longitude'),
        ],
    ]);

    // 解析响应为关联数组,对齐原代码$response->json()的返回结构
    $responseArr = json_decode($response->getBody()->getContents(), true);
    $address = $responseArr['formatted_address'];

    return view('address.index', compact('address'));
}
  • 参数映射说明
    • timeout配置:对应原代码Http::timeout(15),设置请求超时时间为15秒,单位为秒
    • headers配置项:对应原代码withHeaders()传入的自定义请求头数组
    • query配置项:对应原代码get方法第二个参数传入的查询参数数组,Guzzle会自动完成URL编码和参数拼接
    • 响应解析逻辑:$response->getBody()->getContents()用于获取接口返回的原始JSON字符串,传入json_decode第二个参数为true时返回关联数组,和原代码json()方法返回结果完全一致
    • http_errors => false配置:对齐Laravel Http门面默认行为,接口返回4xx、5xx状态码时不直接抛出异常,保持和原代码一致的错误处理逻辑,无此需求可删除该配置。

内容的提问来源于stack exchange,提问作者Pouya Vaghefi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 22:46:03