簡體   English   中英

Axios POST 獲得 500(內部服務器錯誤),其中 ReactJS 和 Laravel Sanctum

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM