【发布时间】:2018-09-09 05:11:54
【问题描述】:
我只是在学习 laravel 资源方法来构建一个基本的 API。下面是我的 api.php 文件的代码,它显示了所有 API 路由。
// List Articles
Route::get('articles', 'ArticleController@index');
// List Single Article
Route::get('article/{id}', 'ArticleController@show');
// Create New Article
Route::post('article', 'ArticleController@store');
// Update Article
Route::put('article', 'ArticleController@store');
// Delete Article
Route::delete('article/{id}', 'ArticleController@destroy');
这非常适用于 get 和 delete 方法。但是对于 Post 方法,它会抛出错误“405 Method not allowed”。我正在使用 Postman 来测试 API 调用。
具体来说,下面是 Postman 显示的确切错误
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
【问题讨论】:
-
更改路由的任何方法名称。例如,将 post 方法的函数名称从 store 更改为
storeArticle!喜欢:Route::post('article', 'ArticleController@storeArticle'); -
我已经尝试过将“存储”更改为“保存”。现在也按照您的指示尝试了“storeArticle”,但这也不起作用。事实上,如果我从控制器中删除该方法,它仍然会显示相同的错误
-
@aslamdoctor:给你错误,因为可能 Put 和 Post 方法名称相同
-
@aslamdoctor:请将您的方法名称 store 更改为 storeArticle 并将 url 名称 article 更改为 store-article 并尝试
-
尝试将
post和put替换为Route::match(['post', 'put'], 'article', 'ArticleController@store');。尽管我必须为put路由添加这一点,但通常的做法是直接处理更新的实体,这意味着您应该将两条路由拆分为单独的控制器方法,并在put方法中请求{id},就像您为单条获取路线。