首页 > 解决方案 > 获取 laravel post api 来识别 json 数据

问题描述

制作API,遇到了一个不太确定的问题。我正在尝试输入一个 JSON 数据块,因为这是节点客户端将提供给 API 的内容。

我收到错误:

ErrorException: Invalid argument supplied for foreach()

我试过在 $data 变量上做 json_encode,也试过这个:

$data = json_encode(json_encode($validatedData["required_data"]), true);

但没有运气。

我目前有这个代码:

    public function putData(Request $request) {
        if($request->get('token') !== config()->get('discord.CLIENT_SECRET'))
            return response()->json($this->badAuthResponse);
        $guilds = Guilds::all();
        $validatedData = $request->validate([
           "required_data" => "required"
        ]);
        $data = $validatedData["required_data"];
        foreach($data as $guild) {
           //complete the task of whatever im going to do with guild in a bit
        }
    }

我试图传递这些数据:

{
   "1":{
      "is_setup":1,
      "guild_data":{
         "prefix":"m>",
         "locale":"en",
         "filter":false
      }
   },
   "2":{
      "warn_data":{
         "1":{
            "total_count":1,
            "reasons":{
               "1":"phising links"
            }
         }
      }
   },
   "3":{

   }
}

标签: phpjsonlaravelapi

解决方案


出于某种奇怪的原因,它不适用于名称

required_data

但是将其更改为

data

它突然开始工作,不知道为什么。

    public function putData(Request $request) {
        if($request->get('token') !== config()->get('discord.CLIENT_SECRET'))
            return response()->json($this->badAuthResponse);
        $guilds = Guilds::all();
        $validData = $request->validate([
           "data" => "required"
        ]);
        $data = json_decode($validData["data"], true);
        foreach($data as $guild=>$data) {
            print_r(($guild));
        }
    }

推荐阅读