Laravel 5.2:MethodNotAllowedException

时间:2016-01-14 12:50:38

标签: laravel laravel-5.2

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

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

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

enter image description here

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

修改

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

enter image description here

编辑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                                            |            |
+--------+----------+--------------+---------------------+----------------------------------------------------+------------+

EDIT3

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

编辑4:

如果我添加一个route :: get并在那里显示登录视图并发送登录凭据,它就可以了。但不是邮差。

2 个答案:

答案 0 :(得分:1)

在邮递员中使用x-www-form-urlencoded而不是form-data,请参阅以下内容。

enter image description here

表单数据

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

enter image description here

<强> urlencoded的

此编码与URL参数中使用的编码相同。您只需输入键/值对,Postman将正确编码键和值。请注意,您无法通过此编码模式上传文件。表单数据和urlencoded之间可能存在一些混淆,因此请务必先检查您的API。

答案 1 :(得分:0)

不幸的是问题出在Postman3上。我现在正在使用高级REST客户端,它可以正常工作。无论我选择何种方法,邮递员都会发送GET请求。