【问题标题】:laravel 5.5 handle request with nested objectlaravel 5.5 使用嵌套对象处理请求
【发布时间】:2018-07-29 22:35:28
【问题描述】:

我目前正在开发一个 Laravel 5.5 项目,但我对特定的 json 请求有一个奇怪的行为。

我的json:

{
    first_name:"MYFIRSTNAME",
    last_name:"MYLASTNAME",
    location:{
        data: {
            address:"3 something street",
            postal_code:"42000",
            lng_lat:"-1.8263223,43.2150621"
        }
    },
    profile_picture:"http://linktoprofilepic.jpg",
    stats:{ 
        data: {
            stat1:335,
            stat2:312, 
            stat3:32
        }
    },
    verification_text:"#trend"
}

所以我将上述 JSON 作为 PUT 请求发送到我的控制器,目前没有任何验证规则。在我的控制器中使用 Laravel 的调试功能 dd( $request->all() ) 进行调试时,我得到以下信息:

array:5 [
  "first_name" => "MYFIRSTNAME"
  "last_name" => "MYLASTNAME"
  "profile_picture" => "http:linktoprofilepic.jpg"
  "" => array:1 [
    "data" => array:3 [
      "stat1" => 335
      "stat2" => 312
      "stat3" => 32
    ]
  ]
  "verification_text" => "#trend"
]

如您所见,嵌套对象 location 不存在,嵌套对象 stats 现在有一个空字符串作为属性名称。我不确定我做错了什么还是 Laravel 不支持嵌套对象?请有人在这个问题上启发我。谢谢

【问题讨论】:

  • 我怀疑 Laravel 正在破坏它收到的数据。那么,您如何发送它以及如何构建对象?您是否检查了您的浏览器开发工具以监控 http 请求并确保您发送的数据是您在上面发布的?
  • 正在发送的数据截图:link 调试响应截图:link 我正在使用 axios 在 Vuejs2 项目上发出请求
  • dd($request->json()->all()); 工作吗?
  • 不,我得到了相同的结果.. 我刚刚注意到财产文件也丢失了
  • 另外,如果这可能有助于理解,当我尝试像这样将我的 json 嵌套在 data 属性中时:{ data : json } 我得到这个作为响应:link 数据属性名称变为空字符串跨度>

标签: javascript php json httprequest laravel-5.5


【解决方案1】:

好的,我发现了问题,@James感谢您的关注!正是你所说的帮助我找到了问题所在。你说“我怀疑 Laravel 正在破坏它收到的数据。”你是对的。我实际上正在使用一个转换请求数据属性名称的中间件,并且这个中间件是在路由中设置的,因此我完全错过了它并忘记了它。有点尴尬^^谢谢你的帮助!

【讨论】:

    猜你喜欢
    • 2016-04-22
    • 2016-06-03
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多