【问题标题】:REST API Request parameter validation LaravelREST API 请求参数验证 Laravel
【发布时间】:2017-04-27 05:52:04
【问题描述】:

我是 Laravel API 的新手。我正在尝试通过 Laravel 的 validate 方法验证发送到 POST 请求中的参数。

以下数据是我通过 POST 请求发送的唯一参数。我想使用 Laravel 的 validate 方法验证 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;
}

【问题讨论】:

  • 请出示您的控制器代码。

标签: php laravel-5


【解决方案1】:

您可以使用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
        );
    }

【讨论】:

    【解决方案2】:

    我找到了我使用以下方法执行此操作的解决方案,

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-03
      • 2017-10-21
      • 2019-04-13
      • 2017-10-01
      • 2018-05-08
      • 2018-09-13
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多