我在Laravel中定义了以下路线:
Route::group(['prefix' => 'api'], function() {
Route::post('login', [
'uses' => 'Auth\AuthController@login',
'as' => 'auth.login',
]);
});
我正在使用Postman发送这样的请求(你也可以看到结果):
为什么我得到一个MethodNotAllowed异常???? 我还尝试在空的html文件中创建一个表单,方法设置为post。但得到了相同的结果。
如果我添加一个显示登录表单的route :: get,在Postman中发布请求后,它会显示登录表单。
我们路线条目的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 | |
+--------+----------+--------------+---------------------+----------------------------------------------------+------------+
更奇怪的一件事。如果我将方法设置为Route :: any,我摆脱了异常,但后来我无法访问post参数。即我没有任何帖子参数。
如果我添加一个route :: get并在那里显示登录视图并发送登录凭据,它就可以了。但不是邮差。
答案 0 :(得分:1)
在邮递员中使用x-www-form-urlencoded而不是form-data,请参阅以下内容。
表单数据
multipart / form-data是Web表单用于传输数据的默认编码。这模拟在网站上填写表格并提交。表单数据编辑器允许您为数据设置键/值对(使用键值编辑器)。您也可以将文件附加到密钥。请注意,由于HTML5规范的限制,文件不会存储在历史记录或集合中。您必须在发送请求时再次选择该文件。
<强> urlencoded的强>
此编码与URL参数中使用的编码相同。您只需输入键/值对,Postman将正确编码键和值。请注意,您无法通过此编码模式上传文件。表单数据和urlencoded之间可能存在一些混淆,因此请务必先检查您的API。
答案 1 :(得分:0)
不幸的是问题出在Postman3上。我现在正在使用高级REST客户端,它可以正常工作。无论我选择何种方法,邮递员都会发送GET请求。