发布于2026-07-10 阅读(0)
扫一扫,手机访问

composer require guzzlehttp/guzzle安装Guzzle。
确认vendor/autoload.php加载正常后,控制器里引入命名空间,然后new Client()实例化。
接着调用get()、post()发起请求,用try-catch捕获GuzzleHttp\Exception\RequestException异常。
响应数据怎么拿?用$response->getStatusCode()获取状态码,再用$response->getBody()->getContents()提取完整响应体。
app/provider.php里注册GuzzleServiceProvider,然后在app/provider/下创建这个类,在register()方法里把GuzzleHttp\Client绑定到容器。
别忘了在config/app.php的providers数组里加上这个提供者。
控制器里通过构造函数注入GuzzleHttp\Client实例即可。这时候预设的base_uri、timeout、headers这些全局配置都能自动带过来,省心不少。
app/common.php里定义http_get()和http_post()函数。函数内部统一创建GuzzleHttp\Client实例,带上默认的超时和UA头。
GET请求自动合并查询参数到URL;POST请求默认用form_params发数据。
异常捕获后返回结构化的错误数组,比如['error' => true, 'message' => $e->getMessage()]。
控制器里一行http_get('https://api.example.com/user')就能拿到响应数组,简洁利落。
app/middleware/GuzzleLogMiddleware.php,在里面构建一个GuzzleHttp\HandlerStack,把日志记录器和重试策略注入进去。然后把这个HandlerStack传给Client构造参数的handler选项,替换掉默认处理链。
配置好重试次数、退避间隔和触发条件(比如网络超时或5xx状态码),每次请求完成后自动写入runtime/log/guzzle/目录下的独立日志文件。这样既保留了完整的请求链路,又能从异常中自动恢复。
app/command下新建命令类FetchExternalData,handle()方法里初始化GuzzleHttp\Client,并调用getAsync方法。构造多个Promise对象存入数组,比如同时请求10个不同用户详情接口,然后调用GuzzleHttp\Promise\Utils::settle($promises)->wait()等待全部完成。
遍历结果集时,区分成功响应与失败异常,分别写入数据库或告警队列。这种方式非常适合做批量数据拉取,显著缩短整体耗时。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8