[英]Axios POST getting 500 (Internal Server Error) with ReactJS and Laravel Sanctum
我是 reactJs 和 laravel 的新手。 所以我遇到的问题是我试图从我的前端注册一个新用户到我的后端,即 laravel。 我也使用 laravel/sanctum,因为我想做一个 SPA 网站。 我尝试使用 axios 发出 HTTP 请求,它给了我 500 错误状态。 这是我的 axios 邮政编码
const [name, setName] = useState("");
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const [password_confirmation, setPasswordConfirmation] = useState("");
const record = JSON.stringify({
name,
email,
password,
password_confirmation,
});
const store = async (e) => {
e.preventDefault();
await axios
.post("http://127.0.0.1:8000/api/register", record, {
headers: { "Content-Type": "aplication/json" },
})
.then(function (resp) {
console.log(resp.data);
})
.catch(function (err) {
console.error(err.response.data);
});
};
我的 laravel api 路线
Route::middleware('auth:sanctum')->group(function() {
Route::get('/me', MeController::class);
Route::post('/logout', LogoutController::class);
});
并注册我用调用方法制作的 controller
public function __invoke(Request $request)
{
$attribute = $request->validate([
'name' => 'required|string',
'email' => 'required|string|unique:users',
'password' => 'required|min:8|confirmed',
]);
$attributes['password'] = bcrypt($request->password);
User::create($attributes);
return response()->json([
'message' => "You're Registered"
]);
}
当我通过注册按钮发送请求时,我通过检查页面在网络部分看到一个错误,如下所示
exception: "Illuminate\Database\QueryException"
file: "D:\File Kuliah\project\backend.mention\vendor\laravel\framework\src\Illuminate\Database\Connection.php"
line: 678
message: "SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value (SQL: insert into `users` (`password`, `updated_at`, `created_at`) values ($2y$10$T0YA.BboEcPDVQm7eIG6kuwybwnPo.tsG.bBkhOhBx54Y5tRWXaBG, 2021-04-08 17:07:09, 2021-04-08 17:07:09))"
我认为问题是因为 CORS 在圣殿中,我试图在 cors.php 文件中设置'support_credential' => true
但它实际上什么也没做。
仔细查看您的代码,您拼错了传递给User::create
的$attributes
变量。 删除s
应该可以解决它。
public function __invoke(Request $request)
{
$attribute = $request->validate([
'name' => 'required|string',
'email' => 'required|string|unique:users',
'password' => 'required|min:8|confirmed',
]);
$attribute['password'] = bcrypt($request->password);
User::create($attribute);
return response()->json([
'message' => "You're Registered"
]);
}
你能试试这个....通过添加名称和 email 字段...
public function __invoke(Request $request)
{
$attribute = $request->validate([
'name' => 'required|string',
'email' => 'required|string|unique:users',
'password' => 'required|min:8|confirmed',
]);
$attribute['password'] = bcrypt($request->password);
User::create($attribute);
return response()->json([
'message' => "You're Registered"
]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.