首页 > 解决方案 > 未定义的索引数据 laravel

问题描述

我在 laravel 上集成了这个登录 api:

端点:http://127.0.0.1:8888/api/v1/users/login/

范围:

 {"data":{ 

"email":"admin@mail.com", 

"password":"admin@123", 

"user_type":"1", 

"encrypted":false 

},"encoded_data":"yes"} 

控制器:

我正在从表单中发布数据:

    $request->validate([
            'username' => 'required',
            'password' => 'required',
            'user_type' => 'required'
        ]);

            $ds = $request->all();
            
            $url = $this->base_api_url . 'api/v1/users/login/';

            $apiRequest = [
                'data' => [
                    'email' => $ds['username'],
                    'password' => $ds['password'],
                    'user_type' => $ds['admin'],
                    'encrypted' => false
                ],
                'encoded_data' => 'yes',
            ];
            
            $apiResponse = Http::acceptJson()->post($url, $apiRequest);
            dd($apiResponse);

它的回报:

{"error":1,"success":false,"message":"Undefined index: data"}

这是我在 $apiRequest 中发送的参数:

array:2 [▼

"data" => array:4 [▼
    "email" => "admin@mail.com"
    "password" => "admin@123"
    "user_type" => "1"
    "encrypted" => false
  ]
  "encoded_data" => "yes"
]

api在邮递员上工作正常:

在此处输入图像描述

标签: laravellaravel-8

解决方案


LaravelHttp::post发送一个普通的 post 请求(表单数据)。您还应该发送Content-type: application/json标头以便 Laravel API 理解它。

尝试使用以下内容:

$apiResponse = Http::accept('application/json')->post($url, $apiRequest);
// or
$apiResponse = Http::acceptJson()->post($url, $apiRequest);

推荐阅读