【问题标题】:Getting a laravel post api to recognize json data获取一个 laravel post api 来识别 json 数据
【发布时间】:2020-05-10 15:38:33
【问题描述】:

在制作 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":{

   }
}

【问题讨论】:

  • 我在您发布的示例数据中没有看到 required_data。您是否希望验证失败而不失败?
  • required_data为传入的数据名称,在postman中测试。数据的传递是正确的,但我正在尝试将其从字符串更改为 JSON 对象。
  • 你试过 dd $data 吗?
  • 转储 $data 变量为我提供了我提供的 JSON,但它已被字符串化,尝试对其进行编码或解码没有任何帮助。
  • 应该是 $data = json_decode($validatedData["required_data"]), true);

标签: php json laravel api


【解决方案1】:

由于某些奇怪的原因,它不适用于名称

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));
        }
    }

【讨论】:

    猜你喜欢
    • 2020-01-21
    • 2018-09-01
    • 2019-01-28
    • 2020-01-22
    • 2021-01-20
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    相关资源
    最近更新 更多