【发布时间】:2019-04-07 07:36:30
【问题描述】:
我正在编写一个 laravel api,当我尝试进行删除和发布请求时,我不断收到方法不允许的异常。我应该在哪里寻找诊断这个问题?
我已阅读有关此问题的大多数其他帖子,这是我尝试/查看的内容。 • 确保路由语法正确
• 确保它没有与其他路线冲突
• 确保我使用了正确的路由(运行 php artisan route:list to 仔细检查)
• 修改了 .htaccess 文件夹(可能我做错了)以允许 GET、POST、PUT、DELETE
这是 api.php 中路由的样子
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::delete('delete/{id}', 'LoginController@delete');
Route::get('stuff', 'LoginController@index');
Route::get('stuff1/{Username}', 'LoginController@show');
这是控制器中的功能
public function delete(Request $request, $id) {
$user = Login::find($id);
$user->delete();
return "204";
}
这是我的 .htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
<Limit GET POST PUT DELETE>
Allow from all
</Limit>
</IfModule>
我可以通过将 Route::delete() 更改为 Route::get() 来解决此问题并实现相同的功能,但这似乎不是标准做法。
【问题讨论】:
-
请您说明您是如何提出请求的,即表单和/或 ajax 调用。