laravel 5.4 中的 API 验证

Posted

技术标签:

【中文标题】laravel 5.4 中的 API 验证【英文标题】:Api validation in laravel 5.4 【发布时间】:2017-12-17 15:23:12 【问题描述】:

大家好,我正在开发 API,但我需要在后端验证一些数据,在这种情况下,我们只需要一个邮递员来发送参数和标头。

现在一切正常,但我需要在每个请求中提供更多有用的数据,Laravel 默认有一个验证器Form Request Validation,但我不知道如何在 API 端使用。

我需要将错误消息以 JSON 格式发送给 Postman。

我找到了两个选项,一个是在控制器中进行验证,但代码似乎很多,另一个是 php artisan make:request StoreObjectPost 然后导入请求进入控制器并更改 store 方法的请求,你推荐哪一个,Ty!

【问题讨论】:

【参考方案1】:

您可以像这样自己实例化验证器:

$validator = Validator::make($request->all(), [
    'name' => 'min:5'
]);

// then, if it fails, return the error messages in JSON format
if ($validator->fails())     
    return response()->json($validator->messages(), 200);

【讨论】:

【参考方案2】:
$PostData = Input::all();
$Validator = Validator::make(array(
     'name' => $PostData['name']
      ), array(
      'name' => 'required'
));
if ($Validator->fails())  //if validator is failed
   return false;
 else 
      // do some thing here

希望对你有帮助

【讨论】:

【参考方案3】:

您应该覆盖FormRequestresponse(array $errors) 方法。

public function response(array $errors)

    //Format your error message

    if ($this->expectsJson()) 
        return new JsonResponse($errors, 422);
    

    return $this->redirector->to($this->getRedirectUrl())
                                    ->withInput($this->except($this->dontFlash))
                                    ->withErrors($errors, $this->errorBag);

【讨论】:

【参考方案4】:

我更喜欢第二种选择。即使我们对数据使用许多验证或在验证中使用自定义错误消息,我们也将能够保持控制器清洁

【讨论】:

以上是关于laravel 5.4 中的 API 验证的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.4 + Ajax 等于 401 未经身份验证

如何在节点/套接字应用程序中验证 laravel 护照 API 令牌?

Laravel 5.4:在两个表上具有多重身份验证的 JWT API 一个有效,另一个无效

公共 Laravel API 的身份验证

Laravel 5.4 - 单击电子邮件中的验证链接时未传递或发送电子邮件验证令牌令牌。

Laravel 5.4 有时验证规则不起作用