【发布时间】:2023-01-18 18:04:53
【问题描述】:
我正在尝试使用此代码制作自定义 Auth 控制器:
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
public function register(Request $request)
{
//validate the request
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8|confirmed',
]);
$data = $request->all();
//create new user
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
//return response
return response()->json(['message' => 'Successfully created user!'], 201);
}
}
控制器应该在数据库中创建一个新的用户条目,用户模型是 Laravel 的默认模型,没有做任何更改。
在我的 api.php 路由文件中,我有这个简单的路由设置:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Route::post('/register', [AuthController::class, 'register']);
问题是,当我尝试向 /api/register 发送 POST 请求时,Laravel 使用默认的 html 页面进行响应:
我在这里做错了什么?考虑到这应该只是我应用程序的后端,所以我不需要设置任何视图
【问题讨论】:
-
运行
php artisan optimize和composer dum-autoload并检查 -
您还可以运行
php artisan route:list来查看路由是否已正确定义。 -
身份验证路由已正确配置,但问题仍然存在
-
如果您分享错误代码,将更容易找到问题
-
你能在验证之前 dd() 并检查它是否通过 register() 方法吗?