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

Laravel中如何从Guzzle请求的API响应中提取指定数据

如何用Guzzle和Laravel从API响应提取指定数据?

你可以通过以下步骤从API的JSON响应中提取演员姓名、图片URL这类指定数据:

步骤1:解析API响应为数组

Guzzle返回的响应体是字符串格式的JSON,需要先转换成PHP关联数组,方便后续字段访问:

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://imdb232.p.rapidapi.com/api/actors/get-bio?nm=nm0000573', [
    'headers' => [
        'x-rapidapi-host' => 'imdb232.p.rapidapi.com',
        'x-rapidapi-key' => 'xxxxxx',
    ],
]);

// 获取响应体字符串并解析为关联数组
$responseBody = $response->getBody()->getContents();
$data = json_decode($responseBody, true);

步骤2:提取指定字段

根据你提供的响应结构,逐层访问数组键即可拿到目标数据,建议用??运算符处理字段缺失的情况,避免报错:

// 提取演员姓名
$actorName = $data['data']['name']['nameText']['text'] ?? '未知姓名';

// 提取演员图片URL
$actorImageUrl = $data['data']['primaryImage']['url'] ?? '无可用图片';

完整示例代码

$client = new \GuzzleHttp\Client();

try {
    $response = $client->request('GET', 'https://imdb232.p.rapidapi.com/api/actors/get-bio?nm=nm0000573', [
        'headers' => [
            'x-rapidapi-host' => 'imdb232.p.rapidapi.com',
            'x-rapidapi-key' => 'xxxxxx',
        ],
    ]);

    $responseBody = $response->getBody()->getContents();
    $data = json_decode($responseBody, true);

    if (json_last_error() !== JSON_ERROR_NONE) {
        // 处理JSON解析失败的情况
        echo '响应解析失败';
        return;
    }

    $actorName = $data['data']['name']['nameText']['text'] ?? '未知姓名';
    $actorImageUrl = $data['data']['primaryImage']['url'] ?? '无可用图片';

    // 输出或使用提取的数据
    echo "演员姓名:{$actorName}\n";
    echo "图片URL:{$actorImageUrl}\n";
} catch (\GuzzleHttp\Exception\RequestException $e) {
    // 处理请求异常,比如网络错误、API返回错误码
    echo '请求出错:' . $e->getMessage();
}

关键说明

  • json_decode($responseBody, true):第二个参数设为true会将JSON转为关联数组,若不设则返回对象,此时需用->访问字段(比如$data->data->name->nameText->text)
  • ??运算符:当某个字段不存在时,返回默认值,避免出现Undefined index或Trying to get property of non-object错误
  • 增加异常捕获:处理请求过程中可能出现的网络问题、API返回错误等情况,让代码更健壮

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:00:14