Slim Framework выбрасывает 405 Not Found Error при каждом запросе - PullRequest
1 голос
/ 18 февраля 2020

Я пытаюсь построить API-интерфейс Slim Framework версии 4 для моего 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 работает нормально, как и ожидалось. Но я вижу эту ошибку при каждом вызове.

Как мне это преодолеть.

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

enter image description here

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

enter image description here

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

enter image description here

Редактировать 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;
});

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

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

1 Ответ

0 голосов
/ 28 апреля 2020

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

Я добавил маршрут (config / маршруты. 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

...