2017-04-27 20 views
1

私はLaravelのAPIを初めて使用しています。私はLaravelの検証メソッドを介してPOSTリクエストに送られたパラメータを検証しようとしています。REST APIリクエストパラメータの検証Laravel

以下のデータは、私がPOSTリクエストを通じて送信する唯一のパラメータです。 Laravelのvalidateメソッドを使用して、device_idの一意性を検証したいと考えています。

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

しかし私はそれが例外を投げ無適切な応答またはエラーメッセージがないデータのみパラメータを検証することができます。私の主な動機は、device_idpasswordおよびuser_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

、私は以下のapprochでこれをやった解決策を見つけましたあなたのコントローラコードを表示してください。 –

答えて

3

はあなたのAPIにリクエストを検証するためにIlluminate\Support\Facades\Validatorを使用することができます:

$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", 
         ) 
     );