缺少参数或值为空 laravel

param is missing or the value is empty laravel

我正在使用提供的 api 创建一个用户。我正在使用 Laravel 并尝试将数据存储到 smartrmail 和文档以创建新订阅者在此处 https://docs.smartrmail.com/en/articles/636615-list-subscribers 每次我发送请求时,我都会收到以下错误:

Server error: `POST https://go.smartrmail.com/api/v1/lists/1sptso/list_subscribers` resulted in a `500 Internal Server Error` response: {"error":"param is missing or the value is empty: subscribers"}

{“错误”:“缺少参数或值为空:订阅者”}

我正在使用 Laravel,我的代码在这里

Route::get('smartrmail',function(){

    $headers = [
        'Accept' => 'application/json',
        'Authorization' => 'token f91715d5-3aac-4db3-a133-4b3a9493a9a4',
        'Content-Type' => 'application/json',
    ];
    
    $client = new GuzzleHttp\Client([
        'headers' => $headers
    ]);
    $data = [
        "subscribers"=>[
            [
                "email"=> "vanhalen@example.com",
                "first_name"=> "van",
                "last_name"=> "halen",
                "subscribed"=> true,
            ]
        ]
    ];
    $res = $client->request('POST', 'https://go.smartrmail.com/api/v1/lists/1sptso/list_subscribers', [
    
        'form_params' => [
                $data 
                       
            ]

    ]);
    return($res);
    // echo $res->getStatusCode();
});

谁能帮我弄清楚这里出了什么问题。我正在关注这个文档 https://docs.smartrmail.com/en/articles/636615-list-subscribers 创建新订阅者

而不是

'form_params' => [
    $data
]

使用

'json' => $data

说明

您想发送json数据(我假设是因为您设置了header'Content-Type' => 'application/json',这意味着您正在发送json),但是form_params 用于 application/x-www-form-urlencoded.

json 将 header 设置为 application/json 并将数据发送为 json.

当您设置正确 header 时,这应该也有效:

'body' => $data

你可以在 Guzzle 文档中找到参数的正确名称,我使用了 uploading data 部分。