繁体   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