2015-02-06 146 views
1

我正在使用Laravel 5 API。我有几个方法具有相似的请求参数Laravel 5 API请求验证

例如,要检查许可证状态或获取设置文件,您需要提供?serial=licence_serial_number参数。

我需要返回400错误代码,当用户没有提供serial参数,403错误代码,当用户试图获取其他用户的许可信息。

什么是最佳实践组织验证和错误处理这些类型的请求?

  • 我应该做一个中间件来检查用户是否提供了?serial
  • 或者我应该为每种方法制作不同的Laravel 5 FormRequest类?
  • 或者我应该直接验证它的控制器:
    if (..) {return response()->json([..], 400);}

回答

0

这取决于acctualy几件事情:

如果你总是验证所有请求同样的事情:去一个中间件解。

但是,如果一些或多个请求验证不同的事情,那么我会建议使用Laravel的新FormRequest。

它完美地处理了您的请求验证,并且还允许您为每个请求定义错误响应。

另外一个中间层是一个选项,让中间件验证需要始终验证的东西。 FormRequests来处理变量验证。

如果你也有类似的FormRequests,可以考虑使用继承,以防止像一个良好稳固的程序员:-)

+1

在使用FormRequests的情况下,我怎样才能定义不同类型的验证失败时的响应? FormRequests只会将用户重定向到验证错误。 – 2015-02-06 13:14:08

0

中间件代码重复可能会是最好的选择,但你也可以使用Request method.Inline验证是一个坏练习忽视编程的最基本规则 - 不要重复自己。

如果你决定去请求选项,你不应该为每个类创建authorize方法,而是创建一个父母女巫将处理这个,其他子类将只有rules方法。

1

$请求 - > wantJson(),与报头的请求接受=应用/ JSON会告诉Laravel到有错误,而不是返回GoBack的的JSON验证错误