Reputation: 340
I am new to API with Laravel. I am trying to validate parameters sent into POST request through the Laravel's validate method.
Following data is the only parameter I am sending through the POST request. I want to validate device_id for uniqueness using Laravel's validate method.
data => {"device_id":"xxxxxx2C-9EA3-4FFB-B26D-E8E483xxxxxx","password":"ANVp285x","user_type":"1"}
I can validate the only data parameter however there is no proper response or error message it's throwing exception. My main motive is to validate device_id
, password
and user_type
.
Here's my controller's store
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;
}
Upvotes: 3
Views: 4344
Reputation: 201
You can use Illuminate\Support\Facades\Validator
to validate requests in your API:
$validator = Validator::make($request->all(), [
"device_id" => "required|unique:devices",
"user_type" => "required",
"password" => "required",
]);
if ($validator->fails()) {
return response(
$validator->errors(),
400
);
}
Upvotes: 10
Reputation: 340
I found the solution I did this with below approch,
$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",
)
);
Upvotes: 0