2017-04-27 593 views
1

我是Laravel API的新手。我試圖通過Laravel的驗證方法驗證發送到POST請求的參數。REST API請求參數驗證Laravel

以下數據是我通過POST請求發送的唯一參數。我想使用Laravel的驗證方法驗證device_id的唯一性。

data => {"device_id":"xxxxxx2C-9EA3-4FFB-B26D-E8E483xxxxxx","password":"ANVp285x","user_type":"1"} 

我可以驗證唯一的數據參數,但沒有適當的響應或錯誤消息它拋出異常。我的主要動機是驗證device_idpassworduser_type

這裏是我的控制器的商店

public function store(Request $request) { 

    try { 
     $result = $this->validate($request, [ 
      'data' => 'required', 
//    'data.device_id' => 'required|unique:users|max:60', 
//    'data.password' => 'required|min:6|confirmed', 
//    'data.user_type' => 'required', 
     ]); 
     $user = new User; 
//  Parameters from request 
     $data = json_decode($request->data, TRUE); 
     $user->device_id = $data['device_id']; 
     $user->password = bcrypt($data['password']); 
     $user->u_type = $data['user_type']; 

//  Parameters to be generated 
     $user->qr_code_image = "test_qr_code.png"; 
     $user->access_code = MyHelper::generate_access_code(); 
     $user->save(); 
     $user = User::find($user->id); 
     $result = Fractal::item($user, new UserTransformer)->getArray(); 
     if (!empty($result['data'])) { 
      $result['status'] = TRUE; 
      $result['message'] = 'Success'; 
     } else { 
      $result['status'] = FALSE; 
      $result['message'] = 'Failed'; 
     } 
    } catch (\Exception $e) { 
     $result['status'] = FALSE; 
     $result['message'] = 'Failed'; 
    } 
    return $result; 
} 
+0

請顯示您的控制器代碼。 –

回答

3

您可以使用Illuminate\Support\Facades\Validator驗證您的API中的請求:

$validator = Validator::make($request->all(), [ 
     "device_id" => "required|unique:devices", 
     "user_type" => "required", 
     "password" => "required, 
    ]); 

    if ($validator->fails()) { 
     return response(
      $validator->errors(), 
      400 
     ); 
    } 
0

我找到了解決方案,我用下面的計算策略做這個,

$data = $request->data; 
     $data = json_decode($data, TRUE); 
     $status = 200; 
     $validator = Validator::make(
         array(
        "goal_title" => $data['goal_name'], 
        "family_id" => $data['family_id'], 
        "goal_frequency" => $data['goal_frequency'], 
         ), array(
        "goal_title" => "required|regex:/(^[A-Za-z0-9 ]+$)+/|:family_goals", 
        "family_id" => "required", 
        "goal_frequency" => "required:goal_frequencies", 
         ) 
     );