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

Laravel API仅返回空大括号问题排查求助

解决Laravel API返回空{}的问题

你的问题出在手动JSON编码+异常处理不当,按以下步骤修改:

1. 移除手动json_encode,让Laravel自动处理响应

Laravel控制器方法返回数组/对象时,框架会自动将其序列化为标准JSON响应,无需手动调用json_encode。修改代码:

function getDNSData(string $domain)
{
    $dns = new Dns();

    try {
        // 直接返回原始数据,Laravel自动完成JSON转换
        return $dns->getRecords($domain);
    } catch(CouldNotFetchDns $e) {
        // 返回异常文本信息,而非Exception对象
        return response()->json(['errors' => $e->getMessage()], 500);
    }
}

2. 异常处理核心注意点

  • 不能直接返回Exception对象,它包含无法被JSON序列化的内部属性,会导致响应异常或空值。
  • 用response()->json()可以指定HTTP错误状态码(比如500表示服务器内部错误),更符合REST API规范。

3. 处理无法自动序列化的对象

如果$dns->getRecords($domain)返回的是自定义对象,无法被Laravel自动序列化,先转为数组:

// 若对象自带toArray方法
return $dns->getRecords($domain)->toArray();
// 或用集合转换
return collect($dns->getRecords($domain))->toArray();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:20:32