Laravel 5.2:MethodNotAllowedException

Laravel 5.2 : MethodNotAllowedException

我在Laravel中定义了以下路由:

Route::group(['prefix' => 'api'], function() {
    Route::post('login', [
        'uses' => 'Auth\AuthController@login',
        'as' => 'auth.login',
    ]);
});

我正在使用 Postman 发送这样的请求(您也可以看到结果):

为什么我会收到 MethodNotAllowed 异常???? 我还尝试在一个空的 html 文件中创建一个表单,方法设置为 post。但得到了相同的结果。

编辑

如果我添加一个显示登录表单的 route::get,在 Postman 中的 post 请求之后它会显示该登录表单。

编辑 2:

我们路由条目的 php artisan route:list 输出:

+--------+----------+--------------+---------------------+----------------------------------------------------+------------+
| Domain | Method   | URI          | Name                | Action                                             | Middleware |
+--------+----------+--------------+---------------------+----------------------------------------------------+------------+
|        | GET|HEAD | /            | guest.home          | App\Http\Controllers\GuestController@index         |            |
|        | GET|HEAD | a/dashboard  | admin.dashboard     | Closure                                            |            |
|        | POST     | api/login    | auth.login          | App\Http\Controllers\Auth\AuthController@login     |            |
|        | GET|HEAD | api/login    | auth.login          | Closure                                            |            |
|        | GET|HEAD | api/logout   | auth.logout         | App\Http\Controllers\Auth\AuthController@getLogout | jwt.auth   |
|        | POST     | api/register | auth.register       | App\Http\Controllers\Auth\AuthController@register  | jwt.auth   |
|        | GET|HEAD | m/dashboard  | moderator.dashboard | Closure                                            |            |
|        | GET|HEAD | pu/dashboard | premium.dashboard   | Closure                                            |            |
|        | GET|HEAD | u/dashboard  | user.dashboard      | Closure                                            |            |
+--------+----------+--------------+---------------------+----------------------------------------------------+------------+

编辑3

还有一件奇怪的事。如果我将方法设置为 Route::any,我摆脱了异常,但我无法访问 post 参数。即我没有任何 post 参数。

编辑 4:

如果我添加 route::get 并在那里显示登录视图并发送登录凭据,它就可以工作。但在 Postman 中没有。

在邮递员中使用x-www-form-urlencoded代替form-data,请看下面的区别。

form-data

multipart/form-data 是 Web 表单用于传输数据的默认编码。这模拟在网站上填写表格并提交。 form-data 编辑器允许您为数据设置 key/value 对(使用 key-value 编辑器)。您也可以将文件附加到密钥。请注意,由于 HTML5 规范的限制,文件不会存储在历史记录或集合中。您必须在发送请求时再次 select 文件。

urlencoded

此编码与 URL 参数中使用的编码相同。您只需输入 key/value 对,Postman 就会正确地对键和值进行编码。请注意,您不能通过这种编码方式上传文件。 form-data 和 urlencoded 之间可能存在一些混淆,因此请务必先检查您的 API。

不幸的是,问题出在 Postman3 上。我现在正在使用 Advanced REST Client,它工作正常。无论我选择什么方法,Postman 都会发送 GET 请求。