I am writing a laravel api and when I try to make delete and post requests I keep getting a method not allowed exception. Where should I be looking to diagnose this problem?
I have read though most of the other posts on this issue and here is what I have tried/looked at. • Made sure the route syntax was correct
• Made sure it didn't conflict with another route
• Made sure I was using the correct route (ran php artisan route:list to double check)
• Modified the .htaccess folder (maybe I did this incorrectly) to allow GET, POST, PUT, DELETE
Here is what the route looks like in 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');
here is the function in the controller
public function delete(Request $request, $id) {
$user = Login::find($id);
$user->delete();
return "204";
}
here is my .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>
I can get around this issue by changing Route::delete() to Route::get() and achieve the same functionality but this doesn't seem like standard practice.