Laravel REST应用中,使用中间件验证输入是否正确?
In a Laravel REST application, is it correct to use middleware to verify the input?
有一个 Laravel 提供 REST 服务的应用程序
在每次调用服务时,我都希望有一些参数,请求将被路由并传递给控制器。
实施一些中间件来检查请求的正确性是否正确,或者在某些情况下(还不知道是哪些)最好在控制器内部实施输入验证?
考虑到 Laravel 4 已转移到中间件解决方案的过滤器,我将把输入验证逻辑放在中间件实例中。
您应该使用 FormRequest
和使用 ValidatesRequests
的控制器。
这样做时,您可以为每个单独的请求指定 validation and authorization rules。
<?php
namespace App\Http\Controllers;
use App\Http\Requests\SomeFormRequest;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class SomeController extends BaseController
{
use ValidatesRequests;
/**
* Store the incoming blog post.
*
* @param SomeFormRequest $request
* @return Response
*/
public function store(SomeFormRequest $request)
{
// The incoming request has already been validated
}
}
在这里,您可以将验证委托给另一个 class,并始终假设如果调用控制器方法,则验证通过。
有一个 Laravel 提供 REST 服务的应用程序
在每次调用服务时,我都希望有一些参数,请求将被路由并传递给控制器。
实施一些中间件来检查请求的正确性是否正确,或者在某些情况下(还不知道是哪些)最好在控制器内部实施输入验证?
考虑到 Laravel 4 已转移到中间件解决方案的过滤器,我将把输入验证逻辑放在中间件实例中。
您应该使用 FormRequest
和使用 ValidatesRequests
的控制器。
这样做时,您可以为每个单独的请求指定 validation and authorization rules。
<?php
namespace App\Http\Controllers;
use App\Http\Requests\SomeFormRequest;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class SomeController extends BaseController
{
use ValidatesRequests;
/**
* Store the incoming blog post.
*
* @param SomeFormRequest $request
* @return Response
*/
public function store(SomeFormRequest $request)
{
// The incoming request has already been validated
}
}
在这里,您可以将验证委托给另一个 class,并始终假设如果调用控制器方法,则验证通过。