405(不允许的方法)

时间:2018-02-18 19:22:34

标签: angularjs laravel cors

当我尝试更新时出错... PUT http://127.0.0.1:8000/api/task 405(方法不允许),有人可以帮忙吗?

public function update(Request $request, $id)
{
     $currentUser = JWTAuth::parseToken()->authenticate();

     $task = $currentUser->tasks()->find($id);

     if(!$task)
     throw new NotFoundHttpException;

      $task->fill($request->all());

      if($task->save())
            return $this->response->noContent();
      else
         return $this->response->error('could_not_update_task', 500);
}

3 个答案:

答案 0 :(得分:2)

methodNotAllowed异常表示您请求的HTTP方法不存在路由。

此路线http://127.0.0.1:8000/api/task看起来像商店路线

更新将类似于http://127.0.0.1:8000/api/task/1

所以请确保添加了方法

的路线

答案 1 :(得分:1)

谢谢大家的帮助,经过黑客和黑客攻击后,我意识到我的Restangular.one(“api / task”)。customPUT(data,taskId)。然后(函数(响应)FUNCTION没有收到数据,所以PUT是在没有数据的情况下点击api路由导致不允许的方法错误。

答案 2 :(得分:0)

  

注意:由于HTML表单仅支持POST和GET,因此将自动在表单中添加_method隐藏字段来欺骗PUT和DELETE方法。 (Laravel Docs

您可以使用GETPOST方法吗?

{!! Form::open(array('url' => '/', 'method' => 'PUT', 'class'=>'col-md-12')) !!} .... wathever code here {!! Form::close() !!}

像这样的事情。希望这个帮助

编辑:我刚看到你的路线和你的控制器。它需要一个slug或唯一标识符(以防万一),所以你的路线必须看起来像这样

Route::put('/api/task/{id}', 'YourController@update');

这为您的控制器提供了您想要的唯一标识符。