![](/img/trans.png)
[英]Laravel: Route::resource() GET & POST work, but PUT & DELETE throw MethodNotAllowedHttpException
[英]method post, put, delete route not work on laravel 5
我尝试在laravel 5上测试api,但是方法发布,放置,删除时遇到问题。
在我的route.php文件中,我有以下代码:
Route::group(['prefix' => 'api'], function()
{
Route::group(['prefix' => 'user'], function()
{
Route::get('', ['uses' => 'UserController@allUsers']);
Route::get('{id}', ['uses' => 'UserController@getUser']);
Route::post('', ['uses' => 'UserController@saveUser']);
Route::put('{id}', ['uses' => 'UsercCntroller@updateUser']);
Route::delete('{id}', ['uses' => 'UserController@deleteUsers']);
});
});
Route::get('/', function()
{
return 'Enjoy the test...';
});
并且在UserController.php中具有代码:
public function allUsers()
{
return 'test';
}
public function getUser($id)
{
return 'test get user';
}
public function saveUser()
{
return 'test save user';
}
public function updateUser($id)
{
return 'test update user';
}
public function deleteUsers($id)
{
return 'test delete user';
}
当我使用get方法运行它时,但在方法post中运行时,放置和删除它不起作用。
为什么是这样?
如果要制作REST API,请使用laravel的生成器。
使用php artisan make:controller UserController
Laravel使用所有必需的方法自动为您创建RESTful控制器类。
然后只在您的routes.php
放一行
Route::group(['prefix' => 'api'], function()
{
Route:resource('user', 'UserController');
});
就是这样,现在您可以非常轻松地访问获取,发布,放置和删除请求。
如果您想查看应该使用哪种方法的php artisan route:list
则只需php artisan route:list
启动php artisan route:list
。
而且由于laravel内置了csrf令牌验证中间件,因此您必须在发布数据请求中传递_token
。 或者,您可以通过执行以下操作来访问这些路由,而无需进行csrf令牌验证:
转到kernel.php
中的Http文件夹中的应用程序目录下,并发表意见csrfToken线。
protected $middleware = [
'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
'Illuminate\Cookie\Middleware\EncryptCookies',
'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
'Illuminate\Session\Middleware\StartSession',
'Illuminate\View\Middleware\ShareErrorsFromSession',
// 'App\Http\Middleware\VerifyCsrfToken',
];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.