[英]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.