Laravel API: 此路由不支持 POST 方法。支持的方法:GET、HEAD
Laravel API: The POST method is not supported for this route. Supported methods: GET, HEAD
我正在向 http://localhost/projects/webdevlist/public/api/register
发送 post 请求并收到 405 错误:
Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
The POST method is not supported for this route. Supported methods: GET, HEAD.
routes\api.php:
<?php
use Illuminate\Http\Request;
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::post('/register', 'Api\AuthController@register');
Api\AuthController.php:
<?php
namespace App\Http\Controllers\Api;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class AuthController extends Controller
{
public function register(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:55',
'email' => 'required|email',
'password' => 'required|confirmed'
]);
$user = User::create($validatedData);
$accessToken = $user->createToken('token')->accessToken;
return response(['user' => $user, 'access_token' => $accessToken]);
}
}
如果我删除表单验证,那么我可以很好地执行 post 请求,并且 return 在 postman 中得到这样的结果。
<?php
namespace App\Http\Controllers\Api;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class AuthController extends Controller
{
public function register(Request $request)
{
return response()->json([
$request->name,
$request->email,
$request->password,
]);
}
}
但是我的验证有问题。为什么验证导致我无法再接受 POST
请求?
这是我的 POST 请求:
您的验证问题是 password
字段。
你的规则说它需要被要求并且确认,但确认是针对哪个字段?
您需要添加一个名称为 password_confirmation
您的视图的字段,如果尚未添加的话。
<input type="password" name="password_confirmation" />
然后为 password_confirmation
字段添加新规则:
$validatedData = $request->validate([
'name' => 'required|max:55',
'email' => 'required|email',
'password' => 'required|confirmed',
'password_confirmation' => 'required'
]);
我正在向 http://localhost/projects/webdevlist/public/api/register
发送 post 请求并收到 405 错误:
Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
The POST method is not supported for this route. Supported methods: GET, HEAD.
routes\api.php:
<?php
use Illuminate\Http\Request;
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::post('/register', 'Api\AuthController@register');
Api\AuthController.php:
<?php
namespace App\Http\Controllers\Api;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class AuthController extends Controller
{
public function register(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:55',
'email' => 'required|email',
'password' => 'required|confirmed'
]);
$user = User::create($validatedData);
$accessToken = $user->createToken('token')->accessToken;
return response(['user' => $user, 'access_token' => $accessToken]);
}
}
如果我删除表单验证,那么我可以很好地执行 post 请求,并且 return 在 postman 中得到这样的结果。
<?php
namespace App\Http\Controllers\Api;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class AuthController extends Controller
{
public function register(Request $request)
{
return response()->json([
$request->name,
$request->email,
$request->password,
]);
}
}
但是我的验证有问题。为什么验证导致我无法再接受 POST
请求?
这是我的 POST 请求:
您的验证问题是 password
字段。
你的规则说它需要被要求并且确认,但确认是针对哪个字段?
您需要添加一个名称为 password_confirmation
您的视图的字段,如果尚未添加的话。
<input type="password" name="password_confirmation" />
然后为 password_confirmation
字段添加新规则:
$validatedData = $request->validate([
'name' => 'required|max:55',
'email' => 'required|email',
'password' => 'required|confirmed',
'password_confirmation' => 'required'
]);