Laravel 5.2验证REST控制器上的PUT / PATCH请求

时间:2016-06-22 10:49:02

标签: php rest validation httprequest laravel-5.2

我有laravel抛出问题405 MethodNotAllowedHttpException。 我一直在尝试将更新请求的验证添加到我的资源PointController。但是,如果忽略@update方法中的验证(并且未经验证更新Point)。因此,我在laracast上发现了一些类似的东西:

class PointRequest extends Request{
public function authorize()
{
        return true;
}
public function rules()
{
   switch($this->method())
    {
    case 'GET':
    case 'DELETE':
    {
     return[];
    }
    case 'POST':
    {
     return [
            'name' =>'required|min:4', 
            'latitude' => 'required|numeric|unique_with:points,longitude',
            'longitude' => 'required|numeric'
            ];
    }
    case 'PUT':
    case 'PATCH':
    {
    return [
            'name' =>'required|min:4',
            'latitude' => 'required|numeric|unique_with:points,longitude',
            'longitude' => 'required|numeric|unique_with:points,latitude'//will add ignore current row
            ];
    }
     default:break;
    }
}
}

可悲的是,它不起作用。为了测试我的应用程序,我正在使用带有x-www-form-urlencoded的POSTMAN。我的项目的一般想法是有本机Android应用程序将通过jsons与服务器应用程序(laravel)进行通信。所以我认为这与我的情况无关:

form action="/foo/bar" method="POST" 
input type="hidden" name="_method" value="PUT"

这是PointController的一部分

public function update(PointRequest $request, $id)
{//code//

我在某个地方犯了一些严重的错误吗?如何让laravel验证我的PUT / PATCH请求?这是我的第一个问题所以我希望我能以正确的方式提出问题。

1 个答案:

答案 0 :(得分:0)

您是否为该请求创建了route

  

Laravel中的大多数HTTP 405错误是由错误定义的路由引起的,或者根本没有为所请求的方法定义路由。

像这样:

Route::post( '/urlPatchRequest', 'PointRequest@update' )