Slim Framework выдает ошибку 405 Not Found при каждом запросе

Я пытаюсь создать Slim Framework версии 4 api для своего приложения angular.

На каждый мой запрос я получаю

Type: Slim\Exception\HttpMethodNotAllowedException
Code: 405
Message: Method not allowed. Must be one of: POST
File: G:\xampp\htdocs\slim\vendor\slim\slim\Slim\Middleware\RoutingMiddleware.php
Line: 96
Trace: #0 G:\xampp\htdocs\slim\vendor\slim\slim\Slim\Routing\RouteRunner.php(72): Slim\Middleware\RoutingMiddleware->performRouting(Object(Slim\Psr7\Request))
#1 G:\xampp\htdocs\slim\vendor\slim\slim\Slim\Middleware\ErrorMiddleware.php(98): Slim\Routing\RouteRunner->handle(Object(Slim\Psr7\Request))
#2 G:\xampp\htdocs\slim\vendor\slim\slim\Slim\MiddlewareDispatcher.php(140): Slim\Middleware\ErrorMiddleware->process(Object(Slim\Psr7\Request), Object(Slim\Routing\RouteRunner))
#3 G:\xampp\htdocs\slim\app\Middlewares\RequestUser.php(19): class@anonymous->handle(Object(Slim\Psr7\Request))
#4 G:\xampp\htdocs\slim\vendor\slim\slim\Slim\MiddlewareDispatcher.php(283): App\Middlewares\RequestUser->__invoke(Object(Slim\Psr7\Request), Object(class@anonymous))
#5 G:\xampp\htdocs\slim\vendor\slim\slim\Slim\MiddlewareDispatcher.php(81): class@anonymous->handle(Object(Slim\Psr7\Request))
#6 G:\xampp\htdocs\slim\vendor\slim\slim\Slim\App.php(211): Slim\MiddlewareDispatcher->handle(Object(Slim\Psr7\Request))
#7 G:\xampp\htdocs\slim\vendor\slim\slim\Slim\App.php(195): Slim\App->handle(Object(Slim\Psr7\Request))
#8 G:\xampp\htdocs\slim\public\index.php(42): Slim\App->run()
#9 {main}
[Tue Feb 18 11:38:13 2020] ::1:57190 [200]: /login
[Tue Feb 18 11:38:14 2020] ::1:57191 [200]: /login

Хорошая часть - мой api работает нормально, как и ожидалось. Но я вижу эту ошибку при каждом звонке.

Как я могу это преодолеть.

Если я попытаюсь позвонить из своего браузера, то ошибки не будет.

Если я сделаю вызов ajax, на вкладке Network не будет ошибок

Но моя командная строка выдает эту ошибку

Редактировать 1

Добавление определений маршрута

$app->get('/',  '\App\Controllers\HomeController:home');
$app->post('/login',  '\App\Controllers\UserController:login');

Редактировать 2

Добавление кода angular

login(data){
    const url = environment.api+'login';
    return this.http.post(url, data);
  }

Ответ мне нужно добавить

$app->options('/{routes:.+}', function ($request, $response, $args) {
    return $response;
});

в моем index.php, чтобы принять все запросы параметров

http://www.slimframework.com/docs/v4/cookbook/enable-cors.html

2 ответа

У меня была такая же ошибка для запроса POST (не для GET), вызванная CORS.

Я добавил маршрут ( config/routes.php):

// Post that cause an error
$app->post('/notes', NoteCreateAction::class);
// Allow preflight requests for /notes
$app->options('/notes', function (ServerRequestInterface $request, ResponseInterface $response): ResponseInterface {
    return $response;
});

Решение было создано здесь: https://odan.github.io/2019/11/24/slim4-cors.html

Существует два способа развертывания PHP-SLIM FRAMEWORK V4:

1. Запустите команду композитора:

      >composer start 

2. Развертывание с сервером apache

а. В файле C:\xampp\apache\conf\extra\httpd-vhosts.conf раскомментируйте этот конфиг

      NameVirtualHost *:80

б. В файле C:\xampp\apache\conf\extra\httpd-vhosts.conf поместите этот конфиг в конец

      <VirtualHost *:80>
DocumentRoot C:\xampp\htdocs\myBackendServer
<Directory "C:\xampp\htdocs\myBackendServer">
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

в. Наконец, в браузере вы можете открыть: http://localhost/

Другие вопросы по тегам